文字化けの原因はどこにある?[Java,Tomcat,SQLServer,Eclipse]
最近、Webアプリケーションについて勉強を始めた。
とりあえず、基礎的な部分からやりましょうということで、
Servlet/JSP、Tomcat
DBとしてSQLServer
Eclipseを用いて行っている。
java8だとjdbc4じゃないとダメ?
Eclipseのディレクトリ構成おかしくない?
みたいな疑問を適当にやり過ごし、
次はDBから情報を取得して表示してみよう。
となったのだが、まあ、問題が発生しました。
DBからちゃんと取得できていない?のか?
大体の環境
Tomcat、Servlet/JSP、SQLServer、JDBCドライバ、Eclipse
現象
・Eclipse上でDBを確認しようとすると、 nvchar が <<Unknown Type (-9)>> になる。
・DBから取得した文字列が ブラウザ上で ??? で表示される
SQL Server Management Studio で確認するとちゃんと格納されているっぽい
とりあえず、ブラウザ上での文字化けを解決したい。
そして、その問題はどこにあるのかと、検索していたのだが・・・
原因:Responseに文字コードを指定していなかったため
原因
HttpServletResponse に対して文字コードを指定していなかった。
これを怠ると、そもそも日本語が文字化けするっぽい。
解決策 「文字コードを指定すればいい」
1 2 |
response.setContentType("text/html"); //もともとこれは設定していた response.setCharacterEncoding("utf-8"); //これを設定したら解決した |
今回の場合、DB関係なかった。
取得までは正しく行えていた。
ただし、その後の出力において文字化けが発生していた。
そもそもServletに対する理解が足りていなかったよ。
原因の所在がぼやける
nvchar が <<Unknown Type (-9)>> とかで検索していたので、
EclipseやJDBCの設定がおかしいのかといろいろいじっていたが、そこではなかった。
確かに、そこも問題といえば問題なのかもしれないが、別の話だった。
そもそも、日本語の表示を正しく行えていなかった。それが問題だった。
ぐちぐち・・・
Eclipseを使っていなかったら、もっと早く解決していたように思える。
Eclipseを使うことによって、逆に問題の所在を突き止めるのに時間がかかっているような気がする。
Eclipseでプロジェクトを作成するとディレクトリの構成とか違うし、それでまず「えっ!?」ってなった。
Eclipse自体についても覚えることがあるし、なんだこいつ。と、愚痴を言いながらやってます。
やはり勉強の最初は、シンプルなエディタとコマンドラインで取り組むことで、ほかの要因を取り除くことにつながるんじゃないか?
まあ、コマンドラインとかでやるための情報のほうが少ない気がするので、それはそれで問題が出そうだけど。
関連記事
関連記事はありませんでした
スポンサーリンク