Linda-chan
Ruby хочет аргументы командной строки в UTF-8. Они там охренели что ли?
Дата рождения: 01.11.1983
Тотальная неудачница и убийца жёстких дисков. Самая большая поклонница Ариэль. Член ордена Вселенского тормоза имени Осаки-сан. Любительница каваййных переднеприводных машинок. Суккуб на полставки. Когти прилагаются.
Linda-chan
Ruby хочет аргументы командной строки в UTF-8. Они там охренели что ли?
Graf
Linda-chan, а что не так-то?
Notis
Linda-chan, UTF-8 какбэ стандарт
Linda-chan
Graf
Linda-chan, Ну, авторы руби, кагбэ японцы, не? как им еще свою кану вводить, если не через utf-8?
Graf
Linda-chan, погоди, нанами шо, не умеет в utf-8?
Notis
Linda-chan, посмотрел в теги не нашел теги ретро и бред
Linda-chan
Graf
Linda-chan, Ты не права
ridouchire
Потому что есть только одна кодировка.
Linda-chan
Graf
Linda-chan, поставь PowerShell - он юникодный, в отличие от cmd.exe
Linda-chan
Linda-chan
Notis
Linda-chan, просто мс поддерживает всякое старьё
ridouchire
Graf
Linda-chan, ОМГ. Топикстартер выбрала инструмент не подходящий для решения задачи в данных ей условиях.
Ей тут понамекали на это. вывод - все идиоты, одна ты такая вся красивая, на красной машинке
Notis
ridouchire, будем честны, некоторые cp1251 и cp866 нужны для некоторого специализированного софта который ровесник говну мамонта, а переписывать этот софт никто не будет.
Notis
ridouchire
Notis
ridouchire, обратная совместимость, обычно старые стандарты выкорчевывают через несколько версий меняя постепенно всякоэ
Linda-chan
Graf
Linda-chan, Опять-таки, ССЗБ.
Linda-chan
Notis
Linda-chan, лоооооооооооол кросплатформенность и опенсорс -не неслышали! Признай свою неправоту.
Graf
Linda-chan, Алсо, сильно сомневаюсь, что utf-8 захардкожена прямо в программе, скорее проблема в среде исполнения, то есть в интерпритаторе рубей
Graf
Notis
Linda-chan, нет ты, я нигде не писал про utf-16?
Linda-chan
Graf
Linda-chan, о чем?
Linda-chan
Graf
Linda-chan, Ой-вэй, второй раз говорю - бубунту на виртуалку. И будет тебе счасть. Реально, ну нахера жрать кактус?
Linda-chan
Linda-chan
Graf
Linda-chan, я уже запутался. то ты пишешь сайт, то жалуешься на какую-то программу, которая хочет аргументы в utf8.
Graf
Linda-chan, переименуй в fail.txt.
Linda-chan
Linda-chan
Notis
Linda-chan, в том что кроссплатформенность предполагает выполнение во всех осях со своими костылями и таргет оси без костылей.
Graf
Linda-chan, ты от критики становишься агрессивной, прям как дедфуд
Linda-chan
Graf
Linda-chan, тогда, что тебе мешает последовать совету?
Notis
Graf
Notis
Linda-chan, а ты не намекай, а прямо скажи, все вы бабы такие, только намеками и можете >_<
Linda-chan
Linda-chan
Linda-chan
Graf
Linda-chan, а что мешает? алсо - виртуалка с убунтой. можно даже серверной.
Честно, быстрее будет
Linda-chan
Graf
Linda-chan, Окай, ты нашла баг, напиши разработчику.
А задачу-то делать надо? вот и ставь убунту в виртуалку
Linda-chan
Graf
Linda-chan, а, программа Ruby.exe? ну, отлично, я угадал, что это требование рантайма.
Notis
Linda-chan, винда умеет в утф8 чо
Graf
Linda-chan, тогда, как будешь решать задачу? без костылей-то?
Graf
Graf
Linda-chan
Linda-chan
Graf
Linda-chan, а руби скомпиленные под NT хотят UTF-8. Ты попала, да
Graf
Linda-chan, я ж говорю, про дальсвязь забыл.
Taciturn
Notis
Graf
Linda-chan, алсо, в твоих терминах - мне доставляют на дом
Notis
Linda-chan
Версия старая. Почему она старая - я уже писала ранее. Но для тебя сделаю исключение и расскажу. Программа привязана к C++ рантайму, который живёт в системном каталоге Windows переделывается в каждой новой версии Windows. Использовать этот рантайм нельзя. Авторы билда не в курсе.
Graf
Graf
Linda-chan, Я уже понял, что авторы билда - плохие. Делать-то ты чо будешь?
Linda-chan
Linda-chan
Notis
Linda-chan, закомпиляй руби под utf-16
Linda-chan
Graf
Notis
Linda-chan, какие голоса?
Notis
Linda-chan
Graf
Graf
Linda-chan
Linda-chan
Linda-chan
Taciturn
Notis
Linda-chan
Notis
Linda-chan, детский сад
Notis
Linda-chan, ещё можно запилить псевдофс где всё будет транслитироваться в cp1251 и будет тебе счастье
Notis
Linda-chan
Notis
Linda-chan, обсуждение и было
Linda-chan
Linda-chan
Linda-chan
Notis
Linda-chan, есть псевдофс которые цепляются на твою корневую фс для удобноты работы с метаданными которые не может хост фс.
Linda-chan
ridouchire
Lad3lJemhBCCKZUlSLkJfSMOzxuhHEI
Linda-chan, вендоебы должны страдать.
Lad3lJemhBCCKZUlSLkJfSMOzxuhHEI
Linda-chan, ...сказало быдло с пивасиком с окраины.
Graf
0xd34df00d, Ай, малацца, я уж думал, когда ты явишься
Radjah
chcp 65001
Lad3lJemhBCCKZUlSLkJfSMOzxuhHEI
Linda-chan, пруф или не едящих говно людей.
Linda-chan
У тебя есть CreateProcess(). Делай CHCP.
Lad3lJemhBCCKZUlSLkJfSMOzxuhHEI
s/линупс/не-винда/
На солярисе и aix у меня тута тоже уникод.
Linda-chan
Спасибо, что напомнил.
Tenno-Seremel
Автор хочет
# Encoding: UTF-16
? Впрочем, не знаю, умеет ли оно UTF-16.
Notis
забрал :3
Linda-chan
Автор хочет
C:\Ruby\bin\ruby.exe "C:\Файло\Byaka.rb"
А оно отвечает, что
Can't find file C:\bofanfoa\Byaka.rb
Radjah
1200 - LE, 1201 - BE
Tenno-Seremel
А, руби и кодировка FS. Можешь погуглить, там, вроде, была какая-то история. Краткая версия: переходи на линукс (^ ^)'
postman
Никогда не пишите на раби, не пользуйтесь софтом на раби и ссыте на программистов на раби.
ap-Codkelden
chcp 1251 > nul && python script.py
Linda-chan
И ты, Брут...
Алсо, дело не в ФС, а в парсинге аргументов. Я так поняла, он делает GetCommandLine() и ждёт, что там будет UTF-8. А там не может быть UTF-8 никак.
ninesigns
поссал ИТТ в лицо любителю аналогий, рекомендую ссать другим.
аналогии - говно и ими оперируют в дискуссиях только тотальные долбоебы уровня ОП.
utf-8 - стандарт. те кто идут против стандартов - пидоры и сосали.
Notis
Linda-chan, а вдруг?
Radjah
В индусском говнокоде виновата. Хули ты хотел?
Linda-chan
Бугага.
Linda-chan
Хорошо, что ты зашёл. Как там лимузин?
Linda-chan
==> MSDN.
Tenno-Seremel
Зря не веришь (^ ^)
Linda-chan
Смотря во что.
Notis
Linda-chan, В БОГА!
Linda-chan
Я есть Создатель. Следующий.
ridouchire
В меня. Можно пожертвования.
Notis
Linda-chan, Криейтор! Творцы нам тут нахуй не нужны.
Linda-chan
Это ты не нужен. Покинь тред и лечи смертельно раненую душу.
Linda-chan
И водителя лимузина забери.
Notis
Linda-chan, копирайтик поставить © забыл...
Notis
evilblade
единственно верный камент во всем треде :D
Linda-chan
Окей. Не уходи.
Linda-chan
Трафик. У меня ж Дальсвязь.
Notis
Linda-chan, ну там этот эпизод, если в кратце
SkyLimited
Вот да
ap-Codkelden
зовите Шмелленгера и запасайтесь клеенкой!
Jahrubahru
Я тред пока что не начинал читать, и с руби знаком поверхностно, но в руби же нет юникодного строкового типа. Есть байтовые строки, как в сишечке. Следовательно, такое поведение (стандартизация на UTF-8) можно понять. Пойду проверю, как в Python сделано.
Jahrubahru
Jahrubahru
ninesigns, ты идиот
Jahrubahru
Linda-chan, скорее всего, эта программа использует неюникодный вариант API. И ожидает получить там UTF-8. Это желание реализуемо, но проще выкинуть руби.
Jahrubahru
Graf, линукс это куда более горький кактус
Jahrubahru
Notis, ты наркоман? Винда не умеет в утф8.
Taciturn
chcp 65001&&echo Нет ты!>test.txt
rayslava
но ведь на нём и так пишут или японцы или просто ебанутые...
Taciturn
Я тут подумал, а что если сделать файл ruby.cmd примерно с таким содержанием:
@echo off
chcp 65001>nul
echo %*>%temp%\cmdl.txt
chcp 1251>nul
for /f "delims=" %%a in (%temp%\cmdl.txt) do ruby.exe %%a
del %temp%\cmdl.txt
вдруг заработает?
Taciturn
Вместо 1251 можно попробовать 866.
igelko
в CreatepProcess. лiл.
igelko
на самом деле нет. и уже давно нет.
там довольно долго была гвоздиками вбита локаль, с которой ты собрал интерпретатор. с 1.9 это уже не так.
Jahrubahru
igelko, там байтовые строки, знающие о своей кодировке. Неужели это решает все проблемы? Неужели ничего не сломается, если в ARGV вместо строк в UTF-8 появятся строки в UTF-16LE?
Jahrubahru
Linda-chan, попробуй альтернативный интерпретатор руби, например, JRuby
Linda-chan
Да ну ёлки ж... Почему никто читать не умеет-то? Речь не о языке, а о екзешнике >_<
Linda-chan
Я подозреваю, что так она и делает.
Выкинуть не могу, придётся биться на костылях =_=
Jahrubahru
Linda-chan, если екзешник (интерпретатор) использует не юникодный вариант API, то передать через командную строку UTF-8 возможно, я считаю.
Jahrubahru
Linda-chan, опиши отдельным постом, что там за ситуация, кто кого вызывает, от чего исходный код есть, от чего нету, адекватные люди подскажут костыль. Спокойной ночи.
Linda-chan
Тоже вариант, но если стартовать Руби из другой программы, не CMD, то придётся ручками всё это делать =_=
Linda-chan
По какой-то причине выполнение всегда прерывается на chcp. Тоесть команда выполняется, и всё, дальше возврат в оболочку.
Linda-chan
Есть Windows билд?
Linda-chan
The Ruby Programming Language on the JVM
Ох.
Linda-chan
Возможно всё, конечно, но так быть не должно.
Taciturn
Странно. %temp% случайно пробелов не содержит?
Linda-chan
В любом варианте, я просто голые BAT файлы писала, где вызов chcp, а потом echo. Тишина, кроме сообщения о смене кодовой страницы. А вообще путь задан коротким именем.
Taciturn
Очень странно, у меня работает. Ну, как работает - меняю ruby.exe на echo ruby.exe и в ответ на
ryby.cmd "C:\Файло\Byaka.rb"
вижу
ruby.exe "C:\Файло\Byaka.rb"
Linda-chan
Краткое описание событий.
#vyqmf/#105
Краткое описание решения.
#vyqmf/#61
Решение, признаться, было известно с самого начала (ну, ещё у меня иногда прокатывает вариант с коротким именем файла, который на NTFS не содержит кириллицы), я просто сообщила, что есть такая ситуация.
Linda-chan
Может быть особенность XP?
Linda-chan
Справедливости ради, это в данном случае - CMD, а не Windows целиком. Сама Windows умеет конвертировать строки в UTF-8, но не умеет догадываться, что программа, использующая ANSI версию функции, ждёт получить UTF-8.
Taciturn
Проверил в XP - действительно не работает.
Linda-chan
Глюк.
netoneko
Linda-chan, пользоваться руби в винде бессмысленно, потому что все запускают его в линуксе. Если ты хочешь деплоить руби в винде, используй JRuby, иначе ты просто потратишь время.
Linda-chan
Идиотодетектор продолжает работать.
netoneko
у тебя нет опыта работы с руби, ты получаешь бесплатный и правильный совет, но отвечаешь ругательствами - очень эффективно
Linda-chan
Зато у тебя есть опыт пальцовки без вникания в суть проблемы. Ну хорошо, ты доказал, что ты - крутой мэн, который деплоит не переставая. А теперь вчитайся в пост и пойми, о чём идёт речь.
P.S. За Жаву нужно приговаривать к манямбе.
netoneko
могу просто посоветовать вместо абсолютного пути к файлам передавать относительный
netoneko
выкинь свой говнософт, попробуй нормальное что-нибудь http://nanoc.ws http://jekyllrb.com http://stasis.me
Linda-chan
Какой хирый. А он не хочет. Везде хочет, а для -r хочет абсолютный путь.
Linda-chan
Ты тоже в булошную на вертолёте летаешь?
Graf
Linda-chan, а ты велосипед для каждой поездки строишь?
netoneko
что такое -r?
Linda-chan
Маякуй, когда разум вернётся в твою бренную голову.
Linda-chan
Параметр.
netoneko
чего?
Linda-chan
Екзешника.
haml --r Z:\Src\Data.rb template.haml data.htm
netoneko
пиздец, все понятно теперь
Linda-chan
Ура!
Jahrubahru
igelko
#vyqmf/146 ну по-хорошему интерпретатор должен для общения с внешним миром хотя бы переменную LANG посмотреть и узнать какая кодировка у stdin/out и всего остального.
Кстати да, можно сходить в сорцы - может можно правильную кодировку через LC_ALL какой-нибудь задать, прости господи.
igelko
#vyqmf/146 ну по-хорошему интерпретатор должен для общения с внешним миром хотя бы переменную LANG посмотреть и узнать какая кодировка у stdin/out и всего остального.
Кстати да, можно сходить в сорцы - может можно правильную кодировку через LC_ALL какой-нибудь задать, прости господи.
igelko
а вот это ты толсто щас.
igelko
кстати никто не сказал, что это именно руби хочет.
Это скорее абстракция над ОС тонковата в этом месте и надо сделать приседание в сорцах.
У меня в пейтонем скрипте как-то так пришлось сделать, чтоб работало:
https://github.com/Igelko/p...mail_unpacker.py#L21
И далее втупую перекодировать:
https://github.com/Igelko/p...mail_unpacker.py#L95
Там надо просто хорошо понимать, что к тебе на вход попадает - это жи байтики, про которые интерпретатор по-дефолту думает, что наверное это строчка в utf-8, раз в нём по-дефолту utf-8.
Linda-chan
"Руби хочет" - это метафора. На самом деле там был грубый баг, когда бралась ANSI версия функции и программа с покерфеймом делала вид, что там наверняка UTF-8.
В Windows тебе не нужно думать, что тебе "по дефолту попадает". Если используешь юникодные функции, то тебе попадает UTF-16.
Jahrubahru
igelko, кодировку аргументов ещё можно обойти в своём скрипте, но один из аргументов интерпретатора - путь к скрипту, тут уж не пофиксишь, так как твой скрипт не запустится.
Баг этот в официальном релизе интерпретотора под винду, так что это именно "проблема руби".
igelko
all software is broken. (c)
igelko
а, ну это прелестно. просто прелестно.
netoneko
так никто не пользуется этим интерпретатором потому что, всем плевать на эту платформу
igelko
вот только не всем, а тем кто интерпретатор пишет.
Linda-chan
Алсо, ты, как и половина ораторов здесь, путаешь программу на интерпретаторе и сам интерпретатор.
Jahrubahru
netoneko, как там у вас в манямирке, перевалило за один процент или всё ещё так же?
igelko
пейтон, к примеру, под венду намного лучше работает.
netoneko
один процент чего?
igelko
не, ну серверная венда зверь всё-таки редкий в вебе.
Linda-chan
Вот будешь проходить флюрографию, а там...
netoneko
а ты пробовала передавать путь в руби-скрипт? может, это баг в хамле, а не в интерпретаторе
igelko
(I didn't mean "Ruby is garbage" [any more than I mean "software is garbage, including all software that I've written"])
Linda-chan
Почему ты употребляешь "мне" во множественном числе?
netoneko
я говорю про авторов и контрибьюторов MRI, а не про себя (хотя мне тоже все равно, как руби работает на винде)
Linda-chan
Вэб - это не весь интерпрайз.
netoneko
он-то тут причем
Jahrubahru
igelko
не весь, но в абсолютном количестве серверов пока форточка ощутимо меньше.
netoneko
ты скажи конкретно, что ты хочешь сказать
Linda-chan
Linda-chan
Я за баланс.
Jahrubahru
1% на десктопе
Linda-chan
Были упомянуты серверы.
Linda-chan
Потому что все они трудятся над другими важными делами.
netoneko
какая связь между руби и линукс-десктопом? что ты несешь?
netoneko
почему у тебя кстати старая версия руби?
Linda-chan
Потому что рубиинсталлер собирают отморозки, которые то ли не понимают, что плохого в статической линковке к DLL, которые переписывают в каждой версии Windows заново, то ли не понимают как идёт процесс сборки и как на него можно повлиять. В багтрекере какие-то невнятные мычания на тему "У нас тулчайн, мы не понимать как оно работать".
Jahrubahru
Выполняют программы на сервере, а разрабатывают на десктопе. А на десктопе лидирует винда.
netoneko
и что? пускай лидирует на десктопе. Разрабатывают обычно на платформе, близкой к тому, где будут запускать, так что никто в здравом уме на руби в винде не разрабатывает.
Taciturn
А там старый-добрый советский аппарат, всё стабильно и надёжно!
Linda-chan
Увы, старых добрых аппаратов почти не осталось, как это ни странно.