Java 没有正确显示重音词
Java doesn't display accent words correctly
我有一个 java 程序可以保存一个文本文件,然后在对话框中输出它的内容。
当我运行程序inside我的IDE(BlueJ)显示如下:
如您在对话框中所见,“1º) Mónica”行正确显示。
但是当我 运行 相同的程序 在 之外时 IDE "Mónica" 显示不正确,如图所示:
如何解决此问题以始终显示正确的输出?
这是将文本文件读取为字符串的代码
public String recordesString()
{
Premios premios = new Premios();
File recordes = new File("recordes.txt");
if(!recordes.exists()) {
if(!client.isConnected())
openFTPSession();
downloadRecordes(); // this downloads the recordes.txt file
}
Scanner s = null;
try {
s = new Scanner(recordes);
} catch (Exception e) {
e.printStackTrace();
}
String string = "";
String linha = null;
for(int i = 1; s.hasNext(); i++) {
linha = s.nextLine();
String palavra[] = linha.split(" ",2);
string += i+"º) "+palavra[1] +" "+ premios.getPremio(Integer.parseInt(palavra[0]))+"\n";
}
s.close();
try {
Files.deleteIfExists(Paths.get(ficRecordes));
} catch (Exception e) {
e.printStackTrace();
}
return string;
}
扫描器使用底层平台的默认字符集读取文件。
见http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.io.File)
我希望文件以 UTF-8 编码,当您 运行 在 IDE 之外时,默认字符集是 ISO-latin-1 左右。如果您在创建扫描仪时指定文件的编码,结果将是可预测的。
s = new Scanner(recordes, "UTF-8");
我有一个 java 程序可以保存一个文本文件,然后在对话框中输出它的内容。
当我运行程序inside我的IDE(BlueJ)显示如下:
如您在对话框中所见,“1º) Mónica”行正确显示。
但是当我 运行 相同的程序 在 之外时 IDE "Mónica" 显示不正确,如图所示:
如何解决此问题以始终显示正确的输出?
这是将文本文件读取为字符串的代码
public String recordesString()
{
Premios premios = new Premios();
File recordes = new File("recordes.txt");
if(!recordes.exists()) {
if(!client.isConnected())
openFTPSession();
downloadRecordes(); // this downloads the recordes.txt file
}
Scanner s = null;
try {
s = new Scanner(recordes);
} catch (Exception e) {
e.printStackTrace();
}
String string = "";
String linha = null;
for(int i = 1; s.hasNext(); i++) {
linha = s.nextLine();
String palavra[] = linha.split(" ",2);
string += i+"º) "+palavra[1] +" "+ premios.getPremio(Integer.parseInt(palavra[0]))+"\n";
}
s.close();
try {
Files.deleteIfExists(Paths.get(ficRecordes));
} catch (Exception e) {
e.printStackTrace();
}
return string;
}
扫描器使用底层平台的默认字符集读取文件。
见http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner(java.io.File)
我希望文件以 UTF-8 编码,当您 运行 在 IDE 之外时,默认字符集是 ISO-latin-1 左右。如果您在创建扫描仪时指定文件的编码,结果将是可预测的。
s = new Scanner(recordes, "UTF-8");