nkf Python



Pythonのデフォルトデコーダで丸囲みの1を変換しようとすると
エラーになってしまいます。

・・・コード変換に厳密なんですね。

この機種依存文字を変換できない問題は
結構有名な事象らしく、コードの変換を
Pythonのデフォルトの部品ではなく、"NKF"を
使うとよさそうなことがわかりました。
http://www.sfo.jp/blog/archives/2007/01/python_japanesenkf_codec_and_mailman.html

さて、早速NKF-Pythonをインストールしようとしたのですが、
コンパイルが通らない。
gccのエラーで
stdio.h: そのようなファイルやディレクトリはありません
と怒られます。

http://www.yamasita.jp/linkstation/2007/09/070921_kurors_6.html
どうやら、ヘッダが無いだけのようです。
apt-get install libc6-dev
でヘッダをダウンロード

今度は、utf8tbl.cが無いって怒られる。
http://d.hatena.ne.jp/Wacky/20061015/1160907834
NKF Pythonの階層がまずかったらしい。

階層を変更してビルドすると、今度は
NKF_python.c:1: error: stray ‘¥357’ in program
って怒られる。

2chで・・・
すごく初心者で恐縮なのですが、cigwinでgccでコンパイルしたら、
以下のようなエラーが出ます。
hello.c:1: error: stray '¥255' in program
hello.c:1: error: stray '¥254' in program
hello.c:1 error: syntax error at '#' token
hello.c:1:4: warning: null character(s) ignored
hello.c:1:6: warning: null character(s) ignored
hello.c:1: error: parse error before "n"
hello.c:1:8: warning: null character(s) ignored
...以下類似なエラー

どこが悪いのでしょうか?

内容は
#include
int main(){return 0;}
だけなのですが…



微妙にスレ違いだが、文字コード見直してみ?
UTF16LE-BOMとか、変な文字コードになってないか?
EUC + LF とか SJIS + LF で保存してやりなおしてみ。


という書き込みを発見。
ソースをwindowsで解凍して、Linuxサーバにコピー
したのがまずかったみたい。
サーバ上で解凍したソースを使うとやっとビルドが
通りました。

結局、やったことは
apt-get install libc6-dev
tar zxvf nkf207.tar.gz
tar zxvf NKF_python20070201.tgz
(解凍したソースのディレクトリに移動して・・・)
python setup.py install

・・・長かったです。


いざ、プログラムを動かすと、今度は
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

泣きそうです。
http://d.hatena.ne.jp/SumiTomohiko/20070120/1169300624
ここを参考に
/usr/lib/python2.4/site-package/sitecustomize.py
を作ると解消しました。




もどる