Я чтение данных из текстового файла со следующими свойствами:Чтение специальных символов из файла - Java
Encoding: ANSI
Тип файла: PC
Теперь файл содержит много специальные символы, такие как символ степени (º) и т. д. Я читаю этот файл, используя следующий код:
File file = new File("C:\\X\\Y\\SpecialCharacter.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
Если файл enc oding - ANSI, приведенный выше код не читает специальные символы должным образом e.x. строка в файле:
«Нижняя тепла и кипятить на медленном огне, пока продукт достигает внутренней температуры 165ºF», reader.readLine()
выведет:
«Нижняя тепла и кипятить на медленном огне, пока продукт не достигнет внутренней температуры 165F»
Когда я изменил кодировка для файла в UTF-8, строка читается так, как она есть в файле, не испорчая специальные символы.
Вопрос, в какой момент данные перепутались? При хранении данных в файле или при чтении его из файла? Открытие файла в «Блокноте» отображает все специальные символы. Как это происходит?
HexDump выход:
-0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -A -B -C -D -E -F
00000000- 4C 6F 77 65 72 20 68 65 61 74 20 61 6E 64 20 73 [Lower heat and s]
00000001- 69 6D 6D 65 72 20 75 6E 74 69 6C 20 70 72 6F 64 [immer until prod]
00000002- 75 63 74 20 72 65 61 63 68 65 73 20 69 6E 74 65 [uct reaches inte]
00000003- 72 6E 61 6C 20 74 65 6D 70 65 72 61 74 75 72 65 [rnal temperature]
00000004- 20 6F 66 20 31 36 35 BA 46 [ of 165.F ]
Пожалуйста, пост [ 'hexdump'] (http://www.richpasco.org/utilities/hexdump.html) линии в вопросе из этого файла. Таким образом, мы можем определить, как кодируется «º». –
@MikeSamuel: Добавлен вывод для указанного текста –