我试图将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文件内的压缩值,就像上面的示例一样,拒绝正确输出......我一定是做错了什么吗?
System.IO
只能与String
一起使用吗? - user12163BS.Char8
,因为它假定是8位编码并截断多字节Unicode字符。除非你绝对知道BS.Char8
是正确的数据类型(这包括知道为什么普通的ByteStrings明确不是那个用例的正确类型),否则请使用普通的ByteStrings。 - David