文字化けについてすっきり
すっきりしました!
英→日に翻訳するアプリケーションの文字化けの問題
手を加えたところ
Before
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
After
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
googelに接続して受け取った入力ストリームを文字として読み込んでいる部分です。
InputStreamReaderはバイトを文字に変換します。変換の際、文字コードは指定しなければプラットフォームのデフォルトのものをそのまま使います。
googleから返ってきたレスポンスの文字セットはutf-8
でもWindowsのデフォルトの文字コードはShift_JIS
文字化けの原因はここにあったみたい
ではなんでJunitのテストではうまくいっていたのかというと、
eclipseの文字コードがutf-8になるように設定していたからなんですね
2個前の記事のはてなの投稿の文字化け解決も同じロジックで、
PrintStreamは文字コードを指定しないとプラットフォームのデフォルトの文字コードを使ってバイトに変換してしまいます。
ここも最初文字コードを指定していなくて、文字化けが起きてしまっていました。
うーん