unpack
とshow
は、 に変換する 2 つの方法Text
ですString
。ただし、ASCII 以外の文字の場合は動作と定義が異なります。
Prelude Data.Text> putStrLn $ unpack $ pack "你好我的朋友"
你好我的朋友
Prelude Data.Text> putStrLn $ show $ pack "你好我的朋友"
"\20320\22909\25105\30340\26379\21451"
を使用show
すると、コードポイントの文字列が返さunpack
れ、実際の文字が表示されると思います。インスタンスを受け取り、Show
を渡したい関数を定義していText
て、実際の非 ASCII 文字をString
.
この動作の設計意図は何ですか? show
と のunpack
定義が異なるのはなぜですか?
ソースはhttp://hackage.haskell.org/packages/archive/text/0.11.1.5/doc/html/src/Data-Text.htmlにあります。