Java 如何读取非ASCII文件?
我有一个带有西里尔字母符号的txt文件。我是这样读的:Java 如何读取非ASCII文件?,java,encoding,Java,Encoding,我有一个带有西里尔字母符号的txt文件。我是这样读的: String csvFile = "C:\\Users\\dolgopolov.a\\Desktop\\Список рассылки 14 07 2014.txt"; BufferedReader br = null; String line = ""; String cvsSplitBy = "\t"; try { br = ne
String csvFile = "C:\\Users\\dolgopolov.a\\Desktop\\Список рассылки 14 07 2014.txt";
BufferedReader br = null;
String line = "";
String cvsSplitBy = "\t";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] country = line.split(cvsSplitBy);
System.out.println("Номер: " + country[0]
+ " , Сообщение: " + country[1] + "");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
但输出是wierd:
Номер: 9047120386 , Сообщение: ��������� �������! �� ����� ����� ������� ������������� � ������� 2,98 ���., ������� ���������� �������� � ������� 3 ����
那么,我怎样才能避免这种情况呢?是否必须更改编码类型或其他内容?
FileReader
使用默认编码,因此您必须使用InputStreamReader
新的InputStreamReader(新的FileInputStream(filePath),编码)
FileReader
使用默认编码,因此您必须使用InputStreamReader
new-InputStreamReader(新文件输入流(filePath),编码)
StreamReader sr=new-StreamReader(stream,encoding.Unicode)
或
转换的字符串=Encoding.bigendianucode.GetString(dataArray);其中dataArray是您的字节数组StreamReader sr=newstreamreader(stream,Encoding.Unicode) 或
转换的字符串=Encoding.bigendianucode.GetString(dataArray);其中dataArray是您的字节数组是的,您应该将编码设置为UTF-8并重试。请注意,文件中包含的字符并不重要。您必须始终知道用于放置它们的字符集和编码。是的,您应该将编码设置为UTF-8并重试。看,文件中包含的字符并不重要。您必须始终知道用于将它们放在那里的字符集和编码。我已经这样做了
br=new BufferedReader(new InputStreamReader(new FileInputStream(csvFile),“UTF-8”)代码>可能是编码。。。试试“Cp1251”或“Cp866”,我已经这样做了br=new BufferedReader(新的InputStreamReader(新的文件InputStream(csvFile),“UTF-8”)代码>可能是编码。。。试试“Cp1251”或“Cp866”,问题被标记,问题中的代码是Java。问题被标记,问题中的代码是Java。