Domyślnie pliki są odczytywane w narodowych systemu, więc jeśli masz plik przy użyciu niestandardowego kodowania, trzeba ustawić kodowanie pliku obsługiwać samemu.
foo = do
handle <- openFile "file.html" ReadMode
hSetEncoding handle utf8_bom
contents <- hGetContents handle
doSomethingWithContents
hClose handle
powinien zacząć. Zauważ, że ten nie zawiera obsługi błędów, lepszy sposób byłoby zatem
import Control.Exception -- for bracket
foo = bracket
(openFile "file.html" ReadMode >>= \h -> hSetEncoding h utf8_bom >> return h)
hClose
(\h -> hGetContents h >>= doSomething)
lub
foo = withFile "file.html" ReadMode $
\h -> do hSetEncoding h utf8_bom
contents <- hGetContents h
doSomethingWith contents
Czy może umieścić zrzut szesnastkowy minimalnym pliku, który pokazuje ten błąd dla Ciebie? Nie mogę skopiować Twojego błędu. – ghoti
Użyj tej litery: 'č' –
Jaki jest twój język? Czy jest to utf-8 czy coś ucs2ish (notepad ++ sugeruje Windows)? –