Haskell Word8到文本格式

sti*_*ure 2 text haskell types

我正在寻找从Word8转换为Text的最佳方法,问题是使用Heist的runChildrenWithText函数需要文本输入进行绑定,但getParam功能返回ByteStrings,我可以转换为Word8但不能转换为这些格式中的任何一种格式,所以我无法决定从这里去哪里,任何有关解决这个问题的最佳方法的帮助表示赞赏.

J. *_*son 5

Data.Text.Encodings软件包有许多将ByteStrings 转换为的方法Text.请注意,有可能为一ByteStringText编码失败(比方说,我们假定你是在ByteString包含UTF-8的数据,但它实际上没有),所以这不仅仅是一个比较复杂的过程convert :: ByteString -> Text.

decodeUtf8 :: ByteString -> Text也就是说,会抛出不纯的异常,因此decodeUtf8' :: ByteString -> Either UnicodeException Text如果有任何解码失败的可能性,可能会更好.

您还可以使用decodeUtf8With :: OnDecodeError -> ByteString -> Text和构建更复杂的解码失败处理程序方案Data.Text.Encodings.Error.

  • `ByteString`没有编码,它基本上只是'Vector Word8`,纯二进制数据.为方便起见,它有一个`IsString`实例,可以让你假装它是一个`String`.`Text`是UTF-16编码的,但您可以将其视为Unicode代码点的矢量.将`ByteString`改为`Text`的函数假设`ByteString`是某种编码的代码点流,然后将其转换为Unicode并将其存储为UTF-16.第一个假设可能会失败,从而导致错误. (3认同)