LINUX.ORG.RU
Ответ на: комментарий от pierre

То есть, Char - это юникодный символ? Как тогда работать с символами помимо ASCII? Стандартная библиотека их как-то странно корёжит. А для байтовых строк тогда что используется?

Собственно, задача, грубо говоря, такая: прочитать из файла кусок текста в локальной кодировке, сделать некие преобразования (например, привести все буквы к верхнему регистру), записать результат в другой файл. Я пока в растерянности.

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

> То есть, Char - это юникодный символ?

Да, насколько я помню в Char даже больше 16 бит.

> Стандартная библиотека их как-то странно корёжит.

Это обычно происходит либо в стремлениях хаскеля изображать все в потративном формате, либо вследствие не-utf16 консоли. Чтобы читать и писать в utf-8 проще всего использовать вышеуказанную либу.

Насчет локальной кодировки ничего не знаю. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/iconv-0.4 -- может вот это поможет

> А для байтовых строк тогда что используется?

Для байтовых строк -- bytestring :-)

pierre
()
Ответ на: комментарий от dark_mikhail

Так, стоп. Этот iconv умеет перекодировать только из ByteString в ByteString, а юникодные строки он делать не умеет.

Разве что перекодировать из локальной кодировки в UCS-4, а потом руками перевести UCS-4 в последовательность юникодных символов, но это как-то слегка через ж-пу. Ох, ёлки, почему так всё запущено-то в этом хаскеле?

dark_mikhail
() автор топика
Ответ на: комментарий от pierre

Дык эта библиотека умеет только UTF-8. Но ладно, на первое время сойдёт, спасибо.

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