gpt4 book ai didi

file - haskell - 无效的代码页字节序列

转载 作者:行者123 更新时间:2023-12-04 01:57:22 24 4
gpt4 key购买 nike

readFile "file.html"
"start of the file... *** Exception: file.html: hGetContents: invalid argument (invalid code page byte sequence)

这是一个用 notepad++ 创建的 UTF-8 文件……我怎样才能在 haskell 中读取文件?

最佳答案

默认情况下,文件是在系统语言环境中读取的,所以如果你有一个使用非标准编码的文件,你需要自己设置文件句柄的编码。

foo = do
handle <- openFile "file.html" ReadMode
hSetEncoding handle utf8_bom
contents <- hGetContents handle
doSomethingWithContents
hClose handle

应该让你开始。请注意,这不包含错误处理,因此更好的方法是
import Control.Exception -- for bracket

foo = bracket
(openFile "file.html" ReadMode >>= \h -> hSetEncoding h utf8_bom >> return h)
hClose
(\h -> hGetContents h >>= doSomething)

或者
foo = withFile "file.html" ReadMode $
\h -> do hSetEncoding h utf8_bom
contents <- hGetContents h
doSomethingWith contents

关于file - haskell - 无效的代码页字节序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com