我正在寻找从Word8转换为Text的最佳方法,问题是使用Heist的runChildrenWithText函数需要文本输入进行绑定,但getParam功能返回ByteStrings,我可以转换为Word8但不能转换为Text这些格式,所以我无法决定从哪里开始,有关解决此问题的最佳方法的任何帮助表示赞赏。
答案 0 :(得分:5)
Data.Text.Encodings
包有许多将ByteString
转换为Text
的方法。请注意,ByteString
Text
编码可能失败(例如,您假设ByteString
包含UTF-8数据但实际上并非如此)所以这是一个比convert :: ByteString -> Text
更复杂的过程。
也就是说,decodeUtf8 :: ByteString -> Text
会抛出不纯的异常,因此如果有任何解码失败的可能性,decodeUtf8' :: ByteString -> Either UnicodeException Text
可能会更好。
您还可以使用decodeUtf8With :: OnDecodeError -> ByteString -> Text
和Data.Text.Encodings.Error
构建更复杂的解码失败处理程序方案。