gpt4 book ai didi

file - 在 Haskell : hGetContents: invalid argument (invalid byte sequence) 中使用 "US-ASCII"编码读取文件

转载 作者:行者123 更新时间:2023-12-04 19:02:48 27 4
gpt4 key购买 nike

我正在使用 Haskell 编写解析器,但是这个错误是我无法逾越的墙。这是我的代码:

main = do
arguments <- getArgs
let fileName = head arguments
fileContents <- readFile fileName
converter <- open "UTF-8" Nothing
let titleLength = length fileName
titleWithoutExtension = take (titleLength - 4) fileName
allNonEmptyLines = unlines $ tail $ filter (/= "") $ lines fileContents

当我尝试使用“US-ASCII”编码读取文件时,我收到了著名的错误 hGetContents: invalid argument (invalid byte sequence)。我试图通过“US-ASCII”更改代码中的“UTF-8”,但错误仍然存​​在。有没有办法读取这个文件,或者任何类型的文件处理编码问题?

最佳答案

您应该hSetEncoding为特定的文本编码配置文件句柄,例如:

import System.Environment
import System.IO

main = do
(path : _) <- getArgs
h <- openFile path ReadMode
hSetEncoding h latin1
contents <- hGetContents h
-- no need to close h
putStrLn $ show $ length contents

如果您的文件包含非 ASCII 字符并且它不是 UTF8 编码,那么 latin1 是一个不错的选择,尽管它不是唯一的可能性。

关于file - 在 Haskell : hGetContents: invalid argument (invalid byte sequence) 中使用 "US-ASCII"编码读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33574967/

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