ghcで日本語を正しく扱うには,いまのところ入出力の際に UTF8 <-> 内部コードという変換をする必要があります.…,今は Hackage DB に登録されています.(...)
(どう書く?org 3513 nobsun: ghcで日本語を正しく扱うには,いまのと...(文字列の反転(括弧の対応を保存)) - 投稿の詳細 より )
utf8-string パッケージをインストール
以下、上記のサイトの説明に沿ってインストールを行なった。 (GHC 6.8.3, Windows XP)
HackageDB: utf8-string-0.3.1 にアクセスし、Downloads より utf8-string-0.3.1.tar.gz をダウンロードし、解凍。
コマンドラインより、utf8-string-0.3.1 ディレクトリで以下を実行。
runhaskell Setup.lhs configure runhaskell Setup.lhs build runhaskell Setup.lhs install
ghc-pkg list でインストールされたパッケージを確認することができる。(cf. 5.8.1. Using Packages)
追記 (2011.4.23) : コマンドプロンプトから cabal でインストールするには、
cabal install utf8-string
試してみる
ソースコードは UTF8 にする。読み込むファイルがある場合は、それも UTF8 に。
追記(2009.4.25) : 改行コードは LF 。Meadow なら C-x RET f で utf-8-unix に。
例えば、 文字列の先頭から 3 文字取って返す場合、
import System.IO.UTF8 main = System.IO.UTF8.putStrLn $ take 3 "ほげpiyo"
上記を test.hs と名前を付けて保存。コマンドラインより、
runghc test.hs > result.txt
結果は result.txt に書き込まれる。 (コマンドラインで chcp 65001 とし、UTF-8 が表示されるようにしたが、コマンドラインに出力させるとエラーが表示された。)
ファイルから読み込む場合
今度は、ファイルから読み込んで、3 行分出力するスクリプト。
import qualified System.IO.UTF8 as U main = do cs <- U.getContents U.putStrLn $ unlines $ take 3 $ lines cs
(参考: そんな悲しい目をしないで » Blog Archive » Haskell で日本語(マルチバイト文字)を使う方法 )
上記を test2.hs と名前をつけて保存。読み込む対象のファイル名は data.txt 。コマンドラインから、
runghc test2.hs < data.txt > result.txt
result.txt に結果が表示される。
ドキュメント
上記 HackageDB: utf8-string-0.3 によると、
Exposed modules
Codec.Binary.UTF8.String, System.IO.UTF8, Data.ByteString.UTF8
それぞれ利用できる関数が記載されている。
0コメント:
コメントを投稿