kiyo_hikoのブログ

メモ+日記?

きよツール:ビルドしたjarがUTF-8を読み込むと文字化けする問題を解決

きよツールをjar化するとき、build.xmlでjavacタスクにutf-8を書いているのに、クイズを読むと文字化けして使いものにならなかった件を解決した。

原因はjavacのエンコーディング指定ではなくて別のところ

なんとなくプログラミング言語Javaをパラパラめくって読み返していたらStream解説の章でシグネチャーにcharsetを含むコンストラクターがちらほらあるのを見つけて、クイズローダーのクラスでUTF-8を陽に指定しないといけないんじゃないかと思ったらドンピシャだった。

Then, you shouldn't use FileReader or FileWriter for this because it always uses the platform-default encoding (which is often not UTF-8). From the docs for FileReader:

"The constructors of this class assume that the default character encoding and the default byte-buffer size are appropriate."

java - How to read write this in utf-8? - Stack Overflow

↑を受けて、クイズローダーでFileReaderを使っていた部分をFileInputStreamに置き換えてビルドしたら動くようになった。


あとツール公開に向けての障壁はオブファスケーターを噛ませる方法を調べて適用するぐらいか。
仕事でJavaとか使ってればこういうの出会っても即座に解決したろうなと思うとJava師匠ほしいなあ