ppkd(ppkf)を使って、文字エンコードを自動判別(文字エンコードについて)

| | コメント(0) | トラックバック(0)

スクリプトを書く上で、日本語の扱いが最初のネックになる。

pythonは、基本UTF-8で書く事を推奨する。
その場合にやらなければいけない設定は、過去にも取り上げた事がある。
内部エンコーディングに使われるエンコードをUTF-8に設定...

流れ的には、UTF-8でスクリプトを書き
出力する際に、WindowsならSJISへと変換するという形を取る。

Cygwinについては良く知らないが、
端末が対応した形式に変換して出力する癖を付けるのがベスト。
UTF-8が出力できるのなら、そのままunicodeで出力すれば、可能なはず。

print unicode(str)
# もしくは
print u"%s" % str

ちなみに、Windowsのコマンドライン上で実行する場合は、
Shift-JISにエンコードするとエラーになる時がある。
詳しくは割愛させてもらうが、それを回避するためにはmbcsへエンコードが必要。

print unicode(str).encode('mbcs');

LINUX上では、mbcsは存在しないようで、Shift_JIS-2004になるっぽい。

print unicode(str).encode('shift_jis-2004')

ちなみに、日本語の文字エンコードを自動で判別するなら
ppkd(旧ppdf)という非常に高性能なモジュールがある。
使い方は以下の感じ。


import ppkd

str = 'エンコードが何か分からない文字列'
pkd = ppkd.ppkd()
enc = pkd.guess(str)[1] # 文字エンコードを取得

# SJISの場合は、'shift_jis'と返ってくるので、エンコードに使用する場合は
# 自分の場合、下の様に変更を加えている。
if enc == 'shift_jis': enc = 'shift_jis-2004' # Linuxの時
if enc == 'shift_jis': enc = 'mbcs' # コマンドプロンプトの時

# utf-8にエンコード
str = unicode(str, enc).encode('utf-8')

Pythonで自動巡回等を行うなら、少々重さは感じるものの、必須になってくると思う。

トラックバック(0)

このブログ記事を参照しているブログ一覧: ppkd(ppkf)を使って、文字エンコードを自動判別(文字エンコードについて)

このブログ記事に対するトラックバックURL: http://mt.blog-slime.com/mt-tb.cgi/13

コメントする

このブログ記事について

このページは、adminが2007年10月26日 13:17に書いたブログ記事です。

ひとつ前のブログ記事は「JTG - ipod・iTunes等、mp3プレイヤー用ジャケット画像簡単取得ツール」です。

次のブログ記事は「Python質問箱 - 投票はこちら」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。