Задать вопрос
DVamp1r3
@DVamp1r3
Java/PHP программист

Java, консоль Windows, кодировки?

Пишу GUI для работы с ADB. При получении списка папок все символы (русские) отображаются «как надо». А вот при передаче этих же символов (переход в подкаталог) получаю сообщение «No such file...». Вывод в консоль русских символов в лучших традициях Windows — крякозябры.


Вопрос 1: все решится преобразованием (Unicode -> CP866) аргументов перед передачей процессу?

Вопрос 2: имеются ли такие подводные камни в других ОС? Насколько я знаю, в тех же линуксах консоль юникодовая.
  • Вопрос задан
  • 4902 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@xave
Вопрос 1: все решится преобразованием (Unicode -> CP866) аргументов перед передачей процессу?

если консоль в cp866, то да.
Вопрос 2: имеются ли такие подводные камни в других ОС? Насколько я знаю, в тех же линуксах консоль юникодовая.

В подавляющем большинстве — да, но есть ненулевая вероятность нарваться на машину какого-нибудь ретрограда с koi8-r, поставленной ради экономии байтов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@CAMOKPYT
можно попробовать перевести консоль в UTF8 командой chcp 65001
Ответ написан
Комментировать
DVamp1r3
@DVamp1r3 Автор вопроса
Java/PHP программист
del
Ответ написан
Комментировать
@quarantino
Подводные камни: могут оказаться нерусские форточки с русскими файлами, или файлы на нескольких языках вперемешку. В обоих случаях 866 и 1251 не спасут, лучше сразу передавать юникод. В жаве был баг с передачей юникодных аргументов процессу, но вроде его недавно пофиксили.

stackoverflow.com/questions/1876507/java-runtime-exec-on-windows-fails-with-unicode-in-arguments
bugs.sun.com/bugdatabase/view_bug.do?bug_id=4947220
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы