string - [Char] 和 [Word8] 之间转换的最佳方式?

标签 string unicode haskell utf-8

我是 Haskell 的新手,我正在尝试在我的应用程序 ( Data.Digest.Pure.SHA ) 中使用纯 SHA1 实现和 JSON 库 ( AttoJSON )。

AttoJSON 使用 Data.ByteString.Char8字节串,SHA 使用 Data.ByteString.Lazy bytestrings,我的应用程序中的一些字符串文字是 [Char] .

Haskell Prime's wiki page on Char types似乎表明这仍然是在 Haskell 语言/前奏中解决的问题。

this blogpost on unicode support列出了一些图书馆,但它已有几年历史了。

当前在这些类型之间进行转换的最佳方式是什么,有哪些权衡?

谢谢!

最佳答案

对于 Char8 和 Word8 之间的转换,您应该能够使用 toEnum/fromEnum 转换,因为它们代表相同的数据。

对于 Char 和 Strings,您可能可以使用 Data.ByteString.Char8.pack/unpack 或 map、toEnum 和 fromEnum 的某种组合,但如果您使用的是 ASCII 以外的任何内容,则会抛出数据。

对于不仅仅包含 ASCII 的字符串,一个流行的选择是 UTF8 编码。我喜欢这个 utf8-string 包:

http://hackage.haskell.org/packages/archive/utf8-string/0.3.6/doc/html/Codec-Binary-UTF8-String.html

关于string - [Char] 和 [Word8] 之间转换的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702325/

相关文章:

java - 如何在 VS Code 的集成终端中正确显示 unicode 字符?

Haskell 数据 Nat

regex - 如何替换r中某列中字符串的第n个字符

C - 为什么需要 strcpy()

asp.net - 网页上unicode字符显示不一致

html - 如何将字符串从 unicode 转换为 html 实体

haskell - Reactor-banana-wx `sink` 不会生成启用后接收器处理的事件

haskell - Y-Combinator 是 monad 吗?

python - 如何将充满 .txt 文件的文件夹合并到一个新的 .txt 文件中并保留编码?

python - 如何删除数据框列中的字符串子串?