Евгений Матюшкин (skipy_ru) wrote,
Евгений Матюшкин
skipy_ru

Category:

Обсуждение статьи «Вавилонское столпотворение. Часть 4. Проза жизни: компиляция и ...»

Еще одна статья, практически из серии «ликбез»: «Вавилонское столпотворение. Часть 4. Проза жизни: компиляция и вывод в консоль». Название в заголовке не поместилось. :)

Статья тут: http://www.skipy.ru/technics/encodings_console_comp.html. В этой теме – обсуждение.
Tags: article, io, кодировки, маленькие тонкости, статья
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 12 comments
Я бы добавил замечание о том, что над одним проектом могут работать различные разработчики в различных ОС и даже говорить на различных языках (использовать различные кодовые страницы). Поэтому, в исходниках следует использовать одну "универсальную" кодировку UTF-8 всегда. Это первое что я настраиваю при установке IDE :).

Кроме того, следует вообще избегать не ASCII символов в исходном коде, а по возможности выносить их в ресурсы, хотя-бы ".properties". Логи и сообщения об ошибках, не предназначенные для пользователя, я так-же веду только в ASCII. Это гарантирует, что их можно будет прочитать в любом редакторе на любой системе.
Логично. Подумаю, как это можно оформить. Спасибо!
Комментарии тоже на английском?
Вся команда так хорошо его знает?

Как блин выучить на таком уровне?!
1. Если проект интернациональный, то выбора нет.
2. В жизни я не встречал таких специалистов которые бы были незаменимы и не знали английский на достаточном уровне. Да и сложно представить что человек, регулярно читающий документация на английском, не сможет написать или прочитать комментарий к коду. А если он не читает документацию на английском, то зачем он?
Я свободно читаю - en2ru хороший.
Но пишу очень плохо - ru2en плохой.
Не верится, что все свободно владеют английским, чтобы издагать ясно подробно (как в JDK javadoc например) ;-(

Я и спрашиваю - может секрет какой есть?
Так вот и ответ "как в JDK javadoc".Там же ж куча типичнейших примеров. И потом, никто ж не требует абсолютной грамотности. Постоянные мысли о том как построить предложение повышают скилл. А если не писать, то никогда и не научишься.
Безусловно. Все комментарии на английском. Когда команда расположена в Москве, Новосибирске и Сиэттле, причем в нее входят русские, американцы, немцы и голландцы - иначе никак.

Одна из предыдущих команд была еще лучше. Австралиец, новозеландец, голландец, индусы, мавриканцы, японцы, англичане. И до кучи - русские, украинцы и молдаване. :)

А выучить язык можно только используя его. Переписка, митинги, документация, комментарии в коде.
Вспомнил мой любимый пример. Как-то я искал одну программку. Нашел, но с первого раза она не взлетела. Я полез в код разбираться. В коде какие-то каракули. Долго я подбирал кодировку, пока не понял, что каракули — это то-ли иврит, то-ли идиш.
Здравствуйте! У меня есть вопрос по Вашей статье -
Вы писали, что "И к System.in, использующемуся для чтения из консоли, там тоже надо указывать правильную кодировку."
Подскажите пожалуйста какой клас вместо PrintStream в этом случае надо использовать,
ИБО конструктор класса PrintStream с 3-мя параметрами
принимает в качестве 1-ого из них ТОЛЬКО OutPutStream,
таким образом System.out и System.err проходят ("катят" при компилляции),
а вот System.in увы нет!
Есть предположение, что использование -encoding Cp866 может подпортить жизнь, если в том же коде требуется работать с файлами на кириллице.
С чего бы вдруг? Этот ключ отвечает только за кодировку исходника при компиляции. Во время исполнения ее считайте что и нет.
В чем разница между выводом кириллицы на консоль в Windows 7 и Windows 8.1?
У меня есть файл с кодом:

public static void main(String[] args) throws Exception {
System.out.println(Charset.defaultCharset());
System.out.println("Это кириллица из файла, а это ввод параметра из консоли " + args[0]);
}

Текущая кодовая страница = Cp866
Кодировка файла = UTF-8
System.out.println(Charset.defaultCharset()) = windows-1251;

команда для компиляции:
javac -encoding UTF-8 File.java
Вывод: Это кириллица из файла, а это ввод параметра из консоли параметр

Если тоже самое проделать в Windows 7, то будут "кракозябры", не пойму почему так происходит, в чем отличие?