2009-09-14 5 views
0

Я проанализировал текст (код CAL) с помощью BufferedReader и BufferedWriter в Java, к сожалению, строки, которые я краснею и написал с помощью outStream.write (line); изменились, пожалуйста, смотрите на скриншоты:java bufferedReader, пишет что-то другое, чем оно читает

http://uploadz.eu/images/4qz8mtkm2d9zx3x5ms3n.png ч ** р: //uploadz.eu/images/c03hgkrgrmit2ij2mug.png

, как вы видите, какой-то особый характер даже изменили линии, хотя я предназначен НЕ измените их.

Насколько я знаю, Bufferedwriter/Reader по умолчанию работает в unicode.

ответ

2

Ну BufferedWriter и BufferedReader кодируют агностик - они никогда не имеют дело с фактическими кодировками, поскольку они просто забуферируют существующих читателей и писателей.

В настоящее время FileWriter и FileReader используют системную кодировку по умолчанию (urgh). Чтобы обойти это, вы обычно должны использовать пару InputStream/ или OutputStream/OutputStreamWriter (возможно, завернутый в BufferedReader/BufferedWriter) и явно указывать кодировку.

Вы не сказали, что вы на самом деле читаете, это файл? Вы знаете кодировку файла?

+0

BufferedWriter df = new BufferedWriter (новый OutputStreamWriter ("out.txt")); не работает. это файл .txt. к сожалению, я не знаю кодировки файла. – dayscott

+0

Я узнал: это должен быть ANSI. я был бы признателен за дальнейшие предложения. – dayscott

+0

«ANSI» - это не одна кодировка. Это может означать различные кодировки, обычно 8-битные расширения для ASCII. –

0

Вы должны знать кодировку, если вы собираетесь рассматривать контент как текст (String), или, когда копирование является вашей целью, или обрабатывать содержимое как массив байтов.

+0

светлячок: http://uploadz.eu/images/7anvv8hok4bdt2ewylt1.jpg Java компилятор: «CP1252» я гугле, что «CP1252» похоже, «стандартная» кодировка java. – dayscott

+0

wordStream = new FileInputStream ("x.txt"); \t \t InputStreamReader input = null; \t \t input = new java.io.InputStreamReader (wordStream, "Cp1252"); \t \t reader = new BufferedReader (input); \t \t String str; \t \t попробовать { \t \t \t в то время как (! (Ул = reader.readLine()) = NULL) { \t \t \t \t System.out.println (ул); \t \t \t} К сожалению, выход по-прежнему ошибочно закодирован. – dayscott

+0

Проблема решена! , просто используя класс RandomAccessFile. Я использовал readLine и writeBytes. В качестве разделителя я использовал System.getProperty («line.separator») - запуск Win XP. thx для поддержки парней :) – dayscott

 Смежные вопросы

  • Нет связанных вопросов^_^