У меня есть txt файл с кириллическими символами. Вот как я читал:
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();
}
}
}
Но результат прост:
Номер: 9047120386 , Сообщение: ��������� �������! �� ����� ����� ������� ������������� � ������� 2,98 ���., ������� ���������� �������� � ������� 3 ����
Итак, как я могу избежать этого? Нужно ли мне менять тип кодировки или что-то еще?
FileReader
использует кодировку по умолчанию, поэтому вы должны использовать InputStreamReader
new InputStreamReader(new FileInputStream(filePath), encoding)
br = new BufferedReader(new InputStreamReader(new FileInputStream(csvFile), "UTF-8"));
StreamReader sr = новый StreamReader (поток, Encoding.Unicode);
или
string convert = Encoding.BigEndianUnicode.GetString(dataArray); где dataArray - ваш массив байтов