読者です 読者をやめる 読者になる 読者になる

ポータル自作日誌

自作ポータルとか自作ニュースサイトをコツコツ作るプログラマの作業記録

Data.ConfigFileでhGetContents: invalid argument (Illegal byte sequence)というエラーが出る場合の対処法

まめニュースのサイトの説明とかキーワード設定をコンフィグファイルでできるようにしようとして、エラーが発生したので、対処法を書いておく。

 

背景

コンフィグファイルにしようと思ったのは、即値をプログラム内に書いてて、変更のたびにコンパイルするのがいやだから。まあ、基本がなっていないということですが、コンフィグファイルを読み込む方法を知らなかったので、許してください。

 

エラー内容

Data.ConfigFileパッケージを使ってて、

hGetContents: invalid argument (Illegal byte sequence)

が発生してたんだけど、どうも言語コードの問題らしい。

 

状況

プログラムを直接実行するとでないけど、crontabからシェルを実行して、プログラムを実行するとエラーがでる。

検索していると、UTF-8とかLANGの問題らしい。

 

解決策

ここに書いてあるけど、

http://osdir.com/ml/beginners@haskell.org/2010-11/msg00492.html

 

hSetEncoding stdin utf8
hSetEncoding stdout utf8

こうせよと。

 

とりあえず直った。ちょっと深くは追わない。そこが甘いといわれればそうです。