JAva符号化の小さな穴
1331 ワード
問題は、1行1行が中国語ファイルを読み込むとprintlnを呼び出して出力するのが文字化けし、InputStreamReaderを正しい符号化に設定するかどうかです.
コードは次のとおりです.
ネット上で長い間探して、やっと原因を見つけました:system.out.printlnシステムコードに従って印刷
そこでlocaleコマンドを入力してシステムコードを表示し、Cと表示します.
システムコードをutf 8に設定:export LANG=en_US.utf 8(参照)http://blog.csdn.net/lwm_1985/article/details/8509506)
出力を再実行すると正常です.
システムコードを変更したくない場合は、次のようにコードで変更できます.
または、
コードは次のとおりです.
import java.io.FileInputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintStream;
public class test {
public static void main(String []args) throws IOException {
BufferedReader reader = new BufferedReader(
new InputStreamReader(
new FileInputStream(
args[0]),
"UTF-8"));
String title = reader.readLine();
System.out.println(title);
//PrintStream out = new PrintStream(System.out, true, "UTF-8");
//out.println(title);
reader.close();
}
}
ネット上で長い間探して、やっと原因を見つけました:system.out.printlnシステムコードに従って印刷
そこでlocaleコマンドを入力してシステムコードを表示し、Cと表示します.
システムコードをutf 8に設定:export LANG=en_US.utf 8(参照)http://blog.csdn.net/lwm_1985/article/details/8509506)
出力を再実行すると正常です.
システムコードを変更したくない場合は、次のようにコードで変更できます.
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(title);
または、
System.setOut(new PrintStream(System.out, true, "utf-8"));
System.out.println(title);