2010-05-29 4 views
3

나는패키지를 사용하고이 패키지의 출력 기능만을 사용하여 utf-8을 출력하는 haskell에서 programm를 얻었습니다. Mac OS의 터미널에서 UTF-8 문자열 출력하기

은 내가 이런 식으로 쓸 각 파일의 인코딩 설정 :

hSetEncoding myFile utf8 
{- myFile may be stdout -} 

하지만을 나는 출력하려고하면 대신 나는 리눅스에있어 좋은 알파 문자의

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

(또는

α 

난에 출력을 작성하려고하면 이상한 일이 짝수 : 창에있는 파일)에, 나는 다음있어 파일, 나는 utf-8 파일로 mvim으로 다시 읽을 수 없다. 올바른 동작을 얻을 방법이 있나요

+0

나는 __toEnum__이 아니라 __fromEnum__을 의미한다고 생각합니다. –

+0

'utf8-string'을 GHC 네이티브 인코딩 작업 (핸들의 인코딩 설정)과 함께 사용하면 이중 이스 케이 핑이 발생하는 것처럼 보입니다. 핸들의 인코딩을 지정하기 전에 이전 GHC에서만'utf8-string'을 사용했습니다. – solidsnack

답변

3

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의에 당신을 위해 작동 있으면 알려 주시기 바랍니다 - 그것은 나를 당신을 도울 것이 훨씬 더 쉽게 만들었을 것입니다.

+0

사실, utf8-string을 삭제하면 내 문제가 해결되었지만 나는 추측하지 못했습니다. 아이디어 주셔서 감사합니다 :) –

1

이 적어도 두 가지 당신이 확인해야 있습니다 :

alt text http://files.droplr.com.s3.amazonaws.com/files/35740123/15WO3z.Picture%2026.png

:

  • 터미널 인코딩이 UTF8로 설정해야합니다
    • 파일은 실제로 UTF8로 인코딩됩니다 (Linux에서 올바른 결과를 얻는 경우에 한함)
+0

출력 파일 또는 원본 파일 중 어떤 파일을 의미합니까? – solidsnack

+0

출력 파일이 있습니까? 출력이 터미널에 있다고 생각했습니다. 입력 파일은 UTF8로 인코딩되어야합니다. 그러나 귀하의 경우, 문제는 터미널의 인코딩에 있다고 가정합니다. –