@Linda-chan

Linda-chan

Линда Кайе
Linda-chan

Дата рождения: 01.11.1983

Тотальная неудачница и убийца жёстких дисков. Самая большая поклонница Ариэль. Член ордена Вселенского тормоза имени Осаки-сан. Любительница каваййных переднеприводных машинок. Суккуб на полставки. Когти прилагаются.

https://www.lindachan.net

10 я читаю 59 меня читают
15455 постов
26170 комментариев
Linda-chan
24 Jul 2015

В новой версии Руби под Windows выяснилось, почему кириллица в командной строке больше не проблема. Для начала программа получает юникодную командную строку при помощи функции GetCommandLineW(). Здесь использована W функция для получения командной строки в UTF-16 вместо ANSI.
Потом она пуляет её в функцию, которая занимается парсингом.
https://github.com/ruby/rub...7/win32/win32.c#L774
Обратите внимание на флаг CP_UTF8 - он означает, что после парсинга командная строка из UTF-16 будет перегнана в UTF-8 и дальше будет использована в таком виде.
После дробления на составляющие, программа командует конвертировать UTF-16 строки параметров в указанную кодировку, тоесть, в UTF-8.
https://github.com/ruby/rub.../win32/win32.c#L1747
В функции перекодирования находится простой WideCharToMultibyte(), который и делает указанную работу.
https://github.com/ruby/rub.../win32/win32.c#L1968
Дальше не интересно.
О чём это говорит? Авторы Windows билда Руби теперь в курсе, что юникод в Win32 API существует в UTF-16, и командная строка приложения прилетает в программу именно в этом формате. Кроме того, авторы правильно проводят парсинг и конвертируют текст в кодировку, которая уже дальше используется тем самым кроссплатформенным кодом. Заодно авторы отвечают на вопрос: «А чё, винда не умеет UTF-8?»
Иными словами авторы плюют в лицо всем графам, дедфудам и прочим любителям программ «изначально проектирующихся под UTF-8», тоесть дважды делают всё правильно.
Но всёже можно было заюзать CommandLineToArgW() и не мучиться.

25 Jul 2015

А. Хмммм... Я думаю, что после такого плевка от авторов Руби, те, кого я не забанила (два или три человека) просто не оправились.

#vrajz/5 в ответ на /1
25 Jul 2015

Банить поклонников? Какая жестокость!

#vrajz/6 в ответ на /5
25 Jul 2015

Начальника следствия любой может обидеть.

#vrajz/9 в ответ на /6
25 Jul 2015

Вообще, компетентность т.н. линуксоидов всегда меня поражала. Один раз, лет 10 назад, когда IRC еще был жив, пытался я собрать один опенсорс под винду. На канале #programming их всегда была толпа и они всегда любили похоливарить на соответствующую тему. Так вот, внезапно ни один из них не смог мне быстро подсказать, как передать путь к либе в gcc. Я тогда много писал под С++ и помнил все такие ключи для MS VС++ наизусть. Тогда я понял что все они - обычные болтуны.

25 Jul 2015

В последнее время мне казалось, что времена ололо-линуксоедов прошли, но, как показала практика, такие встречаются =_=

#vrajz/8 в ответ на /3

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.