我发现以下两个将String转换为ByteString的函数,哪个是正确的方法?有什么区别?

Data.ByteString.Char8.pack

Data.ByteString.UTF8.fromString

最佳答案

Data.ByteString.Char8.pack将破坏任何非ASCII字符。该模块中的所有功能均假定“字符”恰好是8位。对于纯ASCII来说,这很好用,但是对于其他有效的Unicode字符,则令人讨厌地打破了。通常,您应该只避免使用整个模块。

的确,ByteString用于二进制数据。 (即,如果您想从文件中读取数据,则保持不变。)如果要处理文本,则可能应该使用text包,而不是ByteString本身。然后text包具有使用不同字符编码(通常为UTF8)对ByteString数据进行编码或解码的功能。

总之,将Unicode String转换为二进制数据的“正确”方法取决于所需的字符编码。

关于string - 哪一种是将String转换为ByteString的正确方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51181957/

10-13 06:05