我意識到我的文本中的重音被轉換爲 。 我將它解釋爲下面的示例,其中 寫入(並覆蓋)文件test.txt。Haskell中的Utf8和重載字符串
它只使用Data.Text中的方法,它們被假定爲 來處理unicode文本。我檢查了源文件 以及輸出文件都使用utf8編碼。
{-# LANGUAGE OverloadedStrings #-}
import Prelude hiding (writeFile)
import Data.Text
import Data.Text.IO
someText :: Text
someText = "Université"
main :: IO()
main = do
writeFile "test.txt" someText
運行代碼後,test.txt包含:Universit 。 在ghci中,我得到以下
*Main> someText
"Universit\233"
這是已經編碼不正確?我還在 https://hackage.haskell.org/package/text-1.2.2.2/docs/Data-Text.html, 中發現了對 的評論,但我仍然不知道如何更正上述示例。
如何在OverloadedString中使用重音並將它們正確地寫入文件?
字符串(和文字以及,我相信)在GHCI都逃脫「滑稽」字符後打印:這樣做是因爲,如果用戶鍵入'putStrLn(顯示字符串)''那裏做show'逸出和增加了引號。你可以用'putStrLn string'打印裸字符串/文本(記得使用'Data.Text.putStrLn'代替文本,而不是前奏) – chi
ghci中的putStrLn顯示正確的重音,所以它必須是writeFile? – mna