2

我正在寻找从 Word8 转换为 Text 的最佳方法,问题是使用 Heist 的 runChildrenWithText 函数需要文本输入进行绑定,但 getParam 功能返回 ByteStrings,我可以将其转换为 Word8,但不能从这些格式中的任何一种转换为 Text ,所以我在决定从哪里开始时遇到了麻烦,感谢您提供有关解决此问题的最佳方法的任何帮助。

4

1 回答 1

5

Data.Text.Encodings包有许多将ByteStrings 转换为Text. 请注意,ByteStringtoText编码可能会失败(例如,您假设ByteString包含 UTF-8 数据,但实际上没有),因此这是一个比convert :: ByteString -> Text.

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

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

于 2013-07-30T16:37:05.580 回答