Собственно установил я себе недавно Debian 9, не смотря на то что в линуксе новичек проблем особых не было. Установил себе jdk 8 от Oracle решил проверить работоспособность и получил странный результат, те файлы которые я создал и скомпелировал в линуксе отображают кирилицу в консоле без проблем.
Файлы же скомпилированные в Win10 показывают всякую ерунду. Хотя сама консоль настроена и работает верно, локаль и utf 8 итд.
И в win10 и debian создавал файлы в sublime text 3.
В чем может быть проблема?
PS: В java и debian новичек так что это может быть стандартная ошибка.
Извиняюсь что не получилось ответить сразу, да это скорей всего из-за кодировки. Но из-за какой именно кодировки я так и не понял.
Провел небольшой тест:
Создал три файла, все три сделал в SublimeText3 и сохранил с кодировкой UTF-8. Вот что было внутри.
class Test_Win10_Default {
public static void main(String[] args) {
System.out.println("ABCabc");
System.out.println("АБВабв");
System.out.println("àéèç");
}
}
Первый файл скомпилировал в командной строке WIN10, второй файл был скомпилирован там-же в командной строке, но перед этим я написал команду chcp 65001 поменяв кодировку командной строки на UTF-8. Результат такой, оба файла отображали символы корректно толь после того как я менял кодировку, при это закрывая командную строку кодировка не сохранялась и приходилось опять вводить команду на её смену.
Далее, я перешел в Debian и создал файл с точно таким же кодом, там всё работало нормально. Файлы созданные в Виндовс не работали, оба. Перейдя же обратно в Виндовс я обнаружил что третий файл созданный в Линукс не работает в Виндовс. Даже после смены кодировки терминал отображал первые две строки, а вот третью с французскими буквами, он не понимал.
В общем я запутался в конец. Неужели нет способа поставить одну кодировку Юникод в обеих системах чтобы больше не думать о таких вещах?
Ответ
По умолчанию компилятор использует системную кодировку. В Windows это cp1251. Поэтому собранные под Windows классы показывают крякозяблы. Чтобы этого избежать, необходимо явно указать компилятору какую кодировку использовать
javac -encoding utf-8 Test_Win10_Default.java
Впрочем, вывести символ à в консоль cmd вам это всё равно не поможет. Ничто не поможет нормально выводить двухбайтовую кодировку в консоль заточенную под использование однобайтовой cp866.
Комментариев нет:
Отправить комментарий