haskell - 将字节字符串部分解码为文本

标签 haskell text decode bytestring

我需要将 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/

相关文章:

haskell - 箭头是功能的真正概括吗?

haskell - 预先填写的用户输入

haskell - 我如何计算 Haskell 中元组的元素?

mobile - 更改文本字段的大小和行为

ios - 使用可解码和 JSON

python - Unicode解码错误: 'gbk' codec can't decode bytes

javascript - 功能珍珠 : Implementing trace in JavaScript

qt - 使用c++和qt时的重音问题

python - six.text_type 与 text.decode ('utf8' 相同吗?

python - 除了 Python 编解码器错误?