Java BufferedReader, пишет что-то другое, чем читает
-
07-07-2019 - |
Вопрос
я проанализировал текст (код CAL) с помощью BufferedReader и BufferedWriter в Java, к сожалению, строки, которые я написал и написал с помощью outStream.write (line); изменились, пожалуйста, посмотрите на скриншоты:
http://uploadz.eu/images/4qz8mtkm2d9zx3x5ms3n.png ч ** р: //uploadz.eu/images/c03hgkrgrmit2ij2mug.png
Как видите, какой-то специальный символ изменил строки, хотя я не собирался их менять.
Насколько я знаю, Bufferedwriter / Reader должен работать в Unicode по умолчанию.
Решение
Ну, BufferedWriter
и BufferedReader
не зависят от кодировки - они никогда не имеют дело с реальными кодировками, поскольку они просто буферизуют существующие читатели и пишущие.
Теперь FileWriter
и FileReader
используют системную кодировку по умолчанию (urgh). Чтобы обойти эту проблему, обычно следует использовать пару InputStream
/ InputStreamReader
или OutputStream
/ OutputStreamWriter
(возможно, в виде BufferedReader
/ BufferedWriter
) и укажите кодировку явно.
Вы не сказали, что вы на самом деле читаете - это файл? Вы знаете кодировку файла?
Другие советы
Вам следует либо знать кодировку, если вы собираетесь обрабатывать контент как текст (String), либо, когда копирование является вашей целью, или трактовать контент как байтовый массив.