我需要将 ByteStrings 从各种编码解码为 Text,但 ByteStrings 可能是不完整的片段。理想情况下,我需要一个具有以下签名的函数:
decodeFragment :: Encoding -> ByteString -> (Text, ByteString)
它返回成功解码的 Text 以及未形成完整 unicode 字符的任何剩余字节(因此我可以在获得下一个片段时重新使用这些字节)。
这种功能是否已经存在于一些 Haskell 库中,还是我需要自己推出?现在,我什至可以开始使用不支持 UTF-8 以外的编码的东西。
最佳答案
棘手。通常,encoding是我对文本编码和解码的首选建议,但我认为它不能提供您所要求的确切内容。它很接近,因为它提供
decodeChar :: (Encoding enc, ByteSource m) => enc -> m Char
你可以迭代得到一个
m String
.捕捉 decodeChar
抛出的错误会告诉你是否已经到了片段的末尾。粗略地看一下 Hackage 上的其他一些编码包表明,它们要么需要相同的方法,要么需要一个补丁来公开类似于上面它们内部使用的功能。
关于haskell - 将字节字符串部分解码为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6786328/