我发现以下两个将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/