unicode - 使用 Haskell 输出 UTF-8 编码的 ByteString

标签 unicode haskell io ghc bytestring

我想简单地将 UTF-8 编码的数据输出到控制台。

我已经成功地使用 String 完成了这个任务。 ,但现在我想对 ByteString 做同样的事情.有没有一种很好又快速的方法来做到这一点?

这是我到目前为止所得到的,但它不起作用:

import Prelude hiding (putStr)
import Data.ByteString.Char8 (putStr, pack)

main :: IO ()
main = putStr $ pack "čušpajž日本語"

它打印出 uapaj~�,� ,呃。

我想要最新 GHC 6.12.1 的最佳答案,尽管我也想听听以前版本的答案。

谢谢!

更新:简单地读取和输出相同的 UTF-8 编码的文本行似乎可以正常工作。 (使用 Data.ByteString.Char8 ,我只是做一个 putStr =<< getLine 。)但是 .hs 文件中的打包值,如上例所示,拒绝正确输出......我一定做错了什么?

最佳答案

utf8-string支持字节串。

import Prelude hiding (putStr)
import Data.ByteString.Char8 (putStr)
import Data.ByteString.UTF8 (fromString)

main :: IO ()
main = putStr $ fromString "čušpajž日本語"

关于unicode - 使用 Haskell 输出 UTF-8 编码的 ByteString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2086842/

相关文章:

java - 相当于 Java 7 中的 map(来自 haskell)

haskell - 如何从外部代码确定数据的构造函数?

c# - 从非托管 unicode 字符串创建 SecureString

excel - 通过 ODBC 将 Excel 连接到 PostgreSQL

haskell - 适用于大型、频繁变化的浮点序列的 Haskell 类型

java - 将实时数据写入文件

python - 如何使用Python流对象?

java - 遍历目录查找特定文件夹

javascript - 为什么 '\u{1D11E}' .charAt(0) 不等于 '\u{1D11E}' ?

c++ - 在 icu::BreakIterator 中查找中断类型