haskell-ja > Archives > 2012/05/14

2012/05/14 01:41:05 UTCkazu
#
shokos ちゃんは、Mac だと書いていますね。
2012/05/14 01:48:14 UTCkazu
#
あ、Windows *以外* でしたか。失礼しました。GHC 7.4 on Mac で、UTF-8 のファイル名が取り扱えることを確認しました。GHC 7.0.4 on Mac では、ファイル名が化けることも確認しました。
2012/05/14 02:00:51 UTCkazu
#
いろいろ、試してみましたが、GHC 7.4 を使って、System.IO.UTF8 は忘れるのが良さそうです。
#
あと、中身がバイナリの話をしているのに、よく読まずに hSetEncoding h utf8 と言ってしまいました。すいません。中身がバイナリの場合は、openBinaryFile などを使うべきです。
2012/05/14 03:26:22 UTCshokos
#
みなさんどうもありがとうございました!
Codec.Binary.UTF8.Stringでうまく行きました。


import Data.ByteString as B
import Codec.Binary.UTF8.String as S

main :: IO ()
main = do
    body <- B.readFile "hoge.jpg"
    B.writeFile (S.encodeString "ほげ.jpg") body


ハマりどころな気がするので、近日中にブログにでもまとめておきます。
GHC7.4は、今実装中のものが一段落したら試してみたいと思います。
どうもありがとうございました!
2012/05/14 03:35:02 UTCikegami__
#
こちらこそ勉強になりました。みなさまに感謝です。