我有一个字符串"\3619\3657\3634\3609\3648\3592\3657\3648\3621\3657\3591",我想解码它.我试着搜索unicode库但没有成功.
前奏曲> putStrLn"\ 3619\3657\3634\3609\3648\3592\3657\3648\3621\3657\3591"
ร้านเจ้เล้ง
请注意,您实际上没有字符串"\3619\3657\3634\3609\3648\3592\3657\3648\3621\3657\3591"- 而是具有UTF-32字符串???????????,"\3619\3657..."恰好是符合ASCII的字符串.默认情况下,GHCi使用Show实例来显示结果,这并没有显示出可以用作事物的Haskell代码的文字.它在unicode方面很保守.这就是为什么
序曲>"ร้านเจ้เล้ง"
"\ 3619\3657\3634\3609\3648\3592\3657\3648\3621\3657\3591"
在另一方面,putStrLn,putChar,hPutStr等功能将只转储在UTF-8,而不是其ASCII安全表示字符串本身.
如果您实际上正在从文件或其他内容中读取转义字符串,则可以直接读取它:
序曲> s < - getLine
"\ 3619\3657\3634\3609\3648\3592\3657\3648\3621\3657\3591"
Prelude> s
"\"\\ 3619 \\ 3657 \\ 3634 \\ 3609\\ 3648 \\ 3592 \\ 3657 \\ 3648 \\ 3621 \\ 3657 \\ 3591 \""
- 请注意双重转义,因为我正在显示一个包含字符串文字的字符串.
前奏曲> putStrLn $ read s
ร้านเจ้เล้ง