Вывод строки UTF-8 на терминал Mac OS - PullRequest
3 голосов
/ 29 мая 2010

Я получил программу на haskell, которая выводит utf-8, используя пакет utf8-string и используя только функции вывода этого пакета.

Я устанавливаю кодировку каждого файла, который пишу таким образом:

hSetEncoding myFile utf8
{- myFile may be stdout -}

но когда я пытаюсь вывести:

alpha = [toEnum 0x03B1] {- α -}

вместо красивой буквы альфа, которую я получил в Linux (или в файле в Windows), я получил следующее:

α 

Странная вещь, даже если я пытаюсь записать вывод в файл, я не могу прочитать его обратно с mvim как файл utf-8. Есть ли способ получить правильное поведение

Ответы [ 2 ]

3 голосов
/ 30 мая 2010

Только что попробовал это на GHC 6.12. Новая функция кодирования устраняет необходимость для utf8-string в этом простом случае.

import System.IO

main                         =  do
  out alpha stdout

alpha                        =  [toEnum 0x03B1] {- α -}

out s handle                 =  do
  hSetEncoding handle utf8
  hPutStrLn handle s

Пожалуйста, дайте мне знать, если это работает для вас на OS X. Пожалуйста, опубликуйте полный код в следующий раз - мне было бы намного легче помочь вам.

1 голос
/ 29 мая 2010

Вы должны убедиться, по крайней мере, в двух вещах:

  • Кодировка терминала должна быть установлена ​​в UTF8:

альтернативный текст http://files.droplr.com.s3.amazonaws.com/files/35740123/15WO3z.Picture%2026.png

  • Файл действительно закодирован в UTF8 (это должно быть, если вы наблюдаете правильный результат в Linux)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...