Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Буква Ш |
Автор: gr0shik 30.3.2010, 13:09 |
Вообщем, вот часть проги( слегка утрированная, но принцип этот) LineNumberReader StartFile= new LineNumberReader(new BufferedReader(new FileReader("test"))); PrintWriter EndFile=new PrintWriter(new OutputStreamWriter(new FileOutputStream("test2"))); .......................................... Line=StartFile.readLine(); Line=new String(Line.getBytes("Cp1251"),"Cp866"); if(Line.endsWith("тест")) EndFile.println(Line); Короч все работает, файл пишется. Но вместо буквы Ш знак ?. В нете все облазил, видел описание проблемы, а решения так и не нашел( Как это побороть? ЗЫ Я новичек в этом, мудренные фразы мне чужды) |
Автор: LSD 30.3.2010, 13:22 |
Вот такой ереси в программе вообще не должно быть! Если тебя надо прочитать файл в одной кодировке и записать в другой, то надо не строку кодировать/раскодировать, а правильно указывать кодировку для Reader/Writer. |
Автор: gr0shik 30.3.2010, 13:39 |
Убрал преобразование. Сделал вообще так- Line=StartFile.readline(); EndFile.println(Line); То есть записываю то, что прочитал- И снова вместо Ш знак вопроса( |
Автор: LSD 30.3.2010, 13:48 | ||
Все копируется без проблем. Скорее всего нужно просто явно указать кодировку в которой читать и писать данные и проблема решится. |
Автор: jk1 30.3.2010, 13:53 |
Знак вопроса вместо "Ш" появляется в том случае, если вы читаете в кодировке 1251 данные, которые были записаны в 866. Приведите, пожалуйста, побольше кода, особенно создание входных/выходных потоков интересует и пример входного файла прикрепите, а то с телепатией у меня сегодня туго. |
Автор: gr0shik 30.3.2010, 14:05 |
LSD Большое спасибо за пример, но мой аналогичный. И как не странно не работает( Буквы Ш я не вижу. Фар показывает вин кодировку, НО если файл для считывания написать САМОМУ с буквой Ш, то в и дос и в вин кодировке все работает( создал файл с буквами Ш и пропустил через прогу), я вижу букву Ш. Но надо считать уже готовый. А вот после его обработки буквы Ш нету. Что-то с файлом может не то? Я прикреплю часть файла) Сорри за конспирацию- служебные данные, но буква Ш в нем есть и попробуйте пропустить через свою прогу этот файл) |
Автор: gr0shik 30.3.2010, 14:31 |
Короч проблема в большой букве Ш( 98-код), записаной в ДОС кодировке. Нашел прогу в консоли перегоняет кодировку в нужную, перегнал в вин и все заработало нормуль! Буква Ш как буква Ш. |
Автор: gr0shik 31.3.2010, 11:12 |
Большое спасибо) Так куда лучше |