Theo mặc định, tệp được đọc ở ngôn ngữ hệ thống, vì vậy nếu bạn có tệp bằng cách sử dụng mã hóa không chuẩn, bạn cần phải tự đặt mã hóa của tệp.
foo = do
handle <- openFile "file.html" ReadMode
hSetEncoding handle utf8_bom
contents <- hGetContents handle
doSomethingWithContents
hClose handle
sẽ giúp bạn bắt đầu. Lưu ý rằng đây không chứa xử lý lỗi, cách tốt hơn sẽ do đó được
import Control.Exception -- for bracket
foo = bracket
(openFile "file.html" ReadMode >>= \h -> hSetEncoding h utf8_bom >> return h)
hClose
(\h -> hGetContents h >>= doSomething)
hoặc
foo = withFile "file.html" ReadMode $
\h -> do hSetEncoding h utf8_bom
contents <- hGetContents h
doSomethingWith contents
Nguồn
2012-10-15 20:33:53
Bạn có thể đăng một kết xuất hex của tệp tối thiểu hiển thị lỗi này cho bạn không? Tôi không thể sao chép lỗi của bạn. – ghoti
Sử dụng ký tự này: 'č' –
Ngôn ngữ của bạn là gì? Nó là một utf-8 hoặc một cái gì đó ucs2ish (notepad ++ cho Windows)? –