I had finished a project in which I read from a text file written with notepad. The characters in my text file are in Arabic language,and the file encoding type is UTF-8. When launching my project inside Netbeans(7.0.1) everything seemed to be ok,but when I built the project as a (.jar) file the characters where displayed in this way: ÇáãæÇÞÚááÊØæíÑ. How could I solve This problem please?
質問する
6173 次
2 に答える
3
ほとんどの場合、どこかでJVMのデフォルトの文字エンコードを使用しています。ファイルがUTF-8を使用してエンコードされていることを100%確信している場合は、読み取り時にもUTF-8を明示的に指定してください。たとえば、このコードは壊れています。
new FileReader("file.txt")
これは、JVMのデフォルトの文字エンコードを使用しているためです。これは制御できない可能性があり、オペレーティングシステムが別の何かを定義している間、NetbeansはUTF-8を使用しているようです。FileReader
コードを移植可能にしたい場合、これによりクラスが完全に役に立たなくなることに注意してください。
代わりに、次のコードスニペットを使用してください。
new InputStreamReader(new FileInputStream("file.txt"), "UTF-8");
あなたはあなたのコードを提供していませんが、これはあなたにこれがどのように実装されるべきかという一般的な印象を与えるはずです。
于 2012-07-07T19:01:40.463 に答える
2
たぶん、この例は少し役に立ちます。「Cp852」でエンコードされた utf-8 ファイルのコンテンツを IDE コンソールとシステム コンソールに出力しようとします。
私のd:\data.txt
含むąźżćąś adsfasdf
このコードを確認しましょう
//I will read chars using utf-8 encoding
BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream("d:\\data.txt"), "utf-8"));
//and write to console using Cp852 encoding (works for my windows7 console)
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out,
"Cp852"),true); // "Cp852" is coding used in
// my console in Win7
// ok, lets read data from file
String line;
while ((line = in.readLine()) != null) {
// here I use IDE encoding
System.out.println(line);
// here I print data using Cp852 encoding
out.println(line);
}
Eclipseで実行すると、出力は次のようになります
ąźżćąś adsfasdf
Ą«ľ†Ą? adsfasdf
ただし、システムコンソールからの出力は
于 2012-07-07T19:09:58.937 に答える