我讀過utf8-string包,ghc默認應該支持utf8。我甚至在某處寫過,現在我使用了默認的代碼頁。GHCI 7.8.3不支持utf8字符
儘管如此,一個簡單的代碼不會執行。
writeFile "asd.txt" "ćlččć"
回報
*** Exception: filenames.txt: commitBuffer: invalid argument (invalid character)
我如何獲得此代碼執行?
我讀過utf8-string包,ghc默認應該支持utf8。我甚至在某處寫過,現在我使用了默認的代碼頁。GHCI 7.8.3不支持utf8字符
儘管如此,一個簡單的代碼不會執行。
writeFile "asd.txt" "ćlččć"
回報
*** Exception: filenames.txt: commitBuffer: invalid argument (invalid character)
我如何獲得此代碼執行?
也許你應該設置你實際寫入的句柄的編碼。我不知道,因爲我不能重現你的問題,但是這樣的事情可能會這樣:
withFile "asd.txt" WriteMode $ \h -> do
hSetEncoding h utf8
hPutStr h "ćlččć"
是的,就是這樣。你只是想'''有 – ditoslav
@DominikDitoIvosevic哎呀,增加了一個'do'。 –
請注意,如果您只是使用hSetEncoding utf8,除非使用utf8代碼頁,否則windows控制檯將會輸出亂碼。爲了解決這個問題,只需使用'(\ e - > mkTextEncoding(show e ++「// TRANSLIT」)):: TextEncoding - > IO TextEncoding'這個事實,當傳遞一個有效的'TextEncoding'時,返回的是基本相同的編碼,但沒有使用未定義字符時的異常拋出行爲。 –
我可以得到關於downvotes的一些澄清? – ditoslav