Кодовые страницы в erlang

 
0
 
Functional languages
ava
dlebedev | 24.04.2012, 23:07
Здравствуйте.

Помогите решить проблему с отображением кириллицы в консоли эрланга под виндой.
Задавал вопрос на erlanger.ru, но там уровень активности местной фауны чуть выше нуля и реальной помощи я так и не получил.

Ситуация такая: есть программа, написанная на erlang (серверная часть программы) и крутится она под версией erlang R12B (erts-5.6.5). Если запустить сервер через bat-файл, а не как сервис, то можно заниматься отладкой и наблюдать за отладочными сообщениями... Русские слова из базы данных отображаются корректно (и ввод русских слов с клавиатуры обрабатывается корректно).

Однако если взять версию erlang поновее (R14B04 (erts-5.8.5)), то начинаются проблемы на ровном месте. Все русские словечки отображаются в некорректной кодировке (CP1252 вместо CP1251), причем это относится как в выводу на экран, так и вводу с клавиатуры. То есть, чтобы передать в функцию параметр "Россия", например, приходится перекодировать его в "Ðîññèÿ". Я даже не знаю, куда копать. Жутко неудобно и вообще, так быть не должно!

Пробовал сравнивать файлы от обеих версий erlang - безнадежно. Yичего подозрительного не нашел).
Пробовал в реестре подменять кодовые страницы для CP1250 и CP1252 на CP1251. Эффект нулевой. Похоже erlang клал на настройки винды с высокой колокольни.

Грешу именно на версию erlang, потому что это единственное, что меняется. Erlang старой верси мне достался по наследству и вообще шел вместе с дистрибутивом программы. Новую версию качал с офф.сайта.

Может кто встречал такой глюк и знает, как его победить?
Comments (3)
ava
k0rvin | 26.04.2012, 09:29 #
попробуй в bat-файле сменить кодировку с помощью chcp
ava
dlebedev | 12.05.2012, 06:41 #
Цитата (k0rvin @  26.4.2012,  09:29 findReferencedText)
попробуй в bat-файле сменить кодировку с помощью chcp 

Не помогло. Пробовал запускать erl и werl (как я понял из исходников эрланга, есть небольшая разница между ними), но результат один и тот же. Пробовал собрать erlang из исходников, но тоже потерпел неудачу. Может потому что не сильно старался... Не знаю. Меня напрягло, что нужно ставить MS SDK 7.1, wxWidgets, MSYS и perl и компилить все это черт знает чем. Не осилил в общем. Правда в исходниках покопался и знаете что? Не нашел я там каких-то хитрых ключей для указания кодировок для erlang-машины. Был один ключ у wxWidgets (о поддержке Unicode) и все. Может плохо смотрел?
ava
dlebedev | 12.03.2013, 11:17 #
В общем, проблема решилась написанием обертки вокруг библиотечной функции io:fwrite, которая при необходимости перекодирует кириллицу из cp1251 в utf8. Можно аналогичные обертки и вокруг других функций сделать, но мне без надобности.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit