将ByteStrings部分解码为Text

时间:2011-07-22 06:17:25

标签: haskell text decode bytestring

我需要将ByteStrings从各种编码解码为Text,但ByteStrings可能是不完整的片段。理想情况下,我需要一个具有以下内容的签名功能:

decodeFragment :: Encoding -> ByteString -> (Text, ByteString)

返回成功解码的Text以及任何未形成完整unicode字符的剩余字节(因此,当我得到下一个片段时,我可以重新使用这些字节)。

这种功能在某些Haskell库中是否已经存在,还是我需要自己编写?就目前而言,我甚至可以开始使用不支持UTF-8以外编码的东西。

1 个答案:

答案 0 :(得分:2)

棘手。通常,encoding是我对编码和解码文本的首选建议,但我不相信它提供了您要求的确切内容。它接近,因为它提供

decodeChar :: (Encoding enc, ByteSource m) => enc -> m Char

您可以迭代以获得m String。捕获decodeChar引发的错误将告诉您是否已经到达片段的末尾。粗略看一下Hackage上的一些其他编码软件包表明他们要么需要相同的方法,要么需要一个补丁来公开类似于他们内部使用的上述函数。