8

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

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

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

这种功能是否已经存在于一些 Haskell 库中,还是我需要自己推出?现在,我什至可以开始使用不支持 UTF-8 以外的编码的东西。

4

1 回答 1

2

棘手。通常,编码是我对文本进行编码和解码的首选建议,但我认为它不能提供您所要求的确切内容。它很接近,因为它提供

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

你可以迭代得到一个m String. 捕获 抛出的错误decodeChar将告诉您是否已到达片段的末尾。粗略地看一下 Hackage 上的其他一些编码包表明,它们要么需要相同的方法,要么需要一个补丁来公开类似于上面它们内部使用的功能。

于 2011-07-22T07:56:27.370 回答