?

Log in

Previous Entry | Next Entry

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

Статья тут: http://www.skipy.ru/technics/encodings_console_comp.html. В этой теме – обсуждение.

Comments

( 12 comments — Leave a comment )
kefirfromperm
Sep. 22nd, 2010 04:42 am (UTC)
Я бы добавил замечание о том, что над одним проектом могут работать различные разработчики в различных ОС и даже говорить на различных языках (использовать различные кодовые страницы). Поэтому, в исходниках следует использовать одну "универсальную" кодировку UTF-8 всегда. Это первое что я настраиваю при установке IDE :).

Кроме того, следует вообще избегать не ASCII символов в исходном коде, а по возможности выносить их в ресурсы, хотя-бы ".properties". Логи и сообщения об ошибках, не предназначенные для пользователя, я так-же веду только в ASCII. Это гарантирует, что их можно будет прочитать в любом редакторе на любой системе.
skipy_ru
Sep. 22nd, 2010 05:33 am (UTC)
Логично. Подумаю, как это можно оформить. Спасибо!
magicprinc
Sep. 22nd, 2010 09:22 am (UTC)
Комментарии тоже на английском?
Вся команда так хорошо его знает?

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

Я и спрашиваю - может секрет какой есть?
kefirfromperm
Sep. 22nd, 2010 09:43 am (UTC)
Так вот и ответ "как в JDK javadoc".Там же ж куча типичнейших примеров. И потом, никто ж не требует абсолютной грамотности. Постоянные мысли о том как построить предложение повышают скилл. А если не писать, то никогда и не научишься.
skipy_ru
Sep. 22nd, 2010 09:34 am (UTC)
Безусловно. Все комментарии на английском. Когда команда расположена в Москве, Новосибирске и Сиэттле, причем в нее входят русские, американцы, немцы и голландцы - иначе никак.

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

А выучить язык можно только используя его. Переписка, митинги, документация, комментарии в коде.
kefirfromperm
Sep. 22nd, 2010 09:35 am (UTC)
Вспомнил мой любимый пример. Как-то я искал одну программку. Нашел, но с первого раза она не взлетела. Я полез в код разбираться. В коде какие-то каракули. Долго я подбирал кодировку, пока не понял, что каракули — это то-ли иврит, то-ли идиш.
yakunin_yura
Jan. 6th, 2013 02:23 pm (UTC)
Здравствуйте! У меня есть вопрос по Вашей статье -
Вы писали, что "И к System.in, использующемуся для чтения из консоли, там тоже надо указывать правильную кодировку."
Подскажите пожалуйста какой клас вместо PrintStream в этом случае надо использовать,
ИБО конструктор класса PrintStream с 3-мя параметрами
принимает в качестве 1-ого из них ТОЛЬКО OutPutStream,
таким образом System.out и System.err проходят ("катят" при компилляции),
а вот System.in увы нет!
Sergey Skripko
Mar. 18th, 2014 06:26 am (UTC)
Есть предположение, что использование -encoding Cp866 может подпортить жизнь, если в том же коде требуется работать с файлами на кириллице.
skipy
Mar. 18th, 2014 07:34 am (UTC)
С чего бы вдруг? Этот ключ отвечает только за кодировку исходника при компиляции. Во время исполнения ее считайте что и нет.
Георгий Воробьев
Feb. 18th, 2015 03:50 pm (UTC)
В чем разница между выводом кириллицы на консоль в 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, то будут "кракозябры", не пойму почему так происходит, в чем отличие?
( 12 comments — Leave a comment )