LINUX.ORG.RU

Common Lisp and cyrillic encodings on mustdie


0

0

Есть готовая рабочая консольная прога на коммон лиспе. Считывает данные из файла и выводит результат работы в консоль. И во входных данных и в результате есть кириллица. Столкнулся с проблемой запуска ее в виндовсе. Пробовал использовать LispWorks и пару других, возникла проблема с кодировками. Если в коммон лиспе указать кодировку входного файла :external-format :latin-1, вроде работает и кириллицу обрабатывает (при кодировке входного файла cp1251), однако при выводе местами жуткие кракозябри, но иногда, когда текст не из входного файла а из исходников проги, вывод нормальный. Как можно добиться нормальной работы с кириллицей? Есть какая-нибудь хаутушка или посоветуете другую лисп-машину?

★★★★☆

Ответ на: комментарий от yyk

Файл в cp1251 читается с :external-format :latin-1, как я и сказал. Проблема только с выводом, где это не работает. Если не считать, что в latin-1 нету кириллицы, следовательно это грязный хак.

bugmaker ★★★★☆
() автор топика
Ответ на: комментарий от bugmaker

:)

Ладно. По пунктам.

Если файл в кодировке cp1251, то почему не читать его с :external-format :cp1251? Или такой кодировки нет?

yyk ★★★★★
()
Ответ на: комментарий от yyk

хе, это я сразу проверил ;) 'Undefined external formft :CP1251' :( Согласно документации к лиспворку этого и следовало ожидать.

bugmaker ★★★★☆
() автор топика
Ответ на: комментарий от bugmaker

Оопс! Ну и гадость... ;)

А какие кодировки есть? Хотя это горю не поможет...

Если лисп нужен а-ля shell (скорость работы не очень критична) - возьмите clisp, там кодировок как у бобика блох. А если стянете версию с iconv, то будут все из указанной библиотеки (если Вас GPL на компьютере не пугает :)

yyk ★★★★★
()
Ответ на: комментарий от bugmaker

Если нужной кодировки нет (и нет в доке к языку /* конкретной реализации */ описания возможности ее "добавить"), то дело швах - только если сами напишете перекодировку. Ну или воспользуетесь соответствующими утилитами :)

yyk ★★★★★
()
Ответ на: комментарий от yyk

Пара других - это lispstudio из http://softsearch.ru/programs/23-566-lisp-studio-download.shtml, там такая же трабла, и wlisp http://geocities.com/dimitry02001/Lisp.html - этот я вообще запустить не смог из-за bad opcode. Спасибо за советы, скачаю MinGW сборку clisp и проверю, но что-то подсказывает мне, что там траблов не будет ;)

bugmaker ★★★★☆
() автор топика
Ответ на: комментарий от bugmaker

> ...но что-то подсказывает мне, что там траблов не будет ;)

:) По крайней мере с кодировкой cp1251 :)))

yyk ★★★★★
()
Ответ на: комментарий от yyk

Аха, в clisp всё путём с ср1251, а большего и не требуется. После конвертации в заработало сразу, clisp rulez и патрикоугоден! Спасибо за полезные советы и проявленое участие.

bugmaker ★★★★☆
() автор топика

Под LispWorks это будет:

:external-format '(win32:code-page :id 1251 :EOL-STYLE :CRLF)

Подробнее инфу искать в LispWorks User Guide: LispWorks44/lib/4-4-0-0/manual/online/web/LWUG/html/lwuser-285.htm

А также в LispWorks Reference Manual про пакет Common Lisp и функцию open.

Lisper.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.