2015-05-01 78 views
-1

我讀過utf8-string包,ghc默認應該支持utf8。我甚至在某處寫過,現在我使用了默認的代碼頁。GHCI 7.8.3不支持utf8字符

儘管如此,一個簡單的代碼不會執行。

writeFile "asd.txt" "ćlččć" 

回報

*** Exception: filenames.txt: commitBuffer: invalid argument (invalid character) 

我如何獲得此代碼執行?

+0

我可以得到關於downvotes的一些澄清? – ditoslav

回答

6

也許你應該設置你實際寫入的句柄的編碼。我不知道,因爲我不能重現你的問題,但是這樣的事情可能會這樣:

withFile "asd.txt" WriteMode $ \h -> do 
    hSetEncoding h utf8 
    hPutStr h "ćlččć" 
+0

是的,就是這樣。你只是想'''有 – ditoslav

+0

@DominikDitoIvosevic哎呀,增加了一個'do'。 –

+0

請注意,如果您只是使用hSetEncoding utf8,除非使用utf8代碼頁,否則windows控制檯將會輸出亂碼。爲了解決這個問題,只需使用'(\ e - > mkTextEncoding(show e ++「// TRANSLIT」)):: TextEncoding - > IO TextEncoding'這個事實,當傳遞一個有效的'TextEncoding'時,返回的是基本相同的編碼,但沒有使用未定義字符時的異常拋出行爲。 –

相關問題