python2系(Windows)のコマンドライン引数で日本語を取り扱う

記事公開日:
最終更新日:

This post is also available in: English-US (英語)

Windows環境でPython2系(Python3系はまた文字コードの取り扱い方法が異なる)を使って開発していて、コマンドライン引数で日本語を取り扱う際に少し困ったので、メモとして書いています。

そもそものややこしい原因は、Windowsでは "cp932" という文字コードShift_JIS のWindows版みたいな設定になっている事が原因で、また python での日本語扱う際のエンコード/デコードのややこしさもあります。

以下の例では、コマンドプロンプト使ってます。
設定にもよると思いますがGit Bashとか使うとエラーが出ました。

#sample.py
#!/usr/bin/env python
# coding: utf-8
import sys

args = sys.argv

print args
print args[0]
text = args[1].decode('cp932')
print text
print args[2]

"""
#コマンドプロンプトでの入力
C:\Users\sample>python sample.py 食パン syokupan
"""
"""
#以下出力結果
['C:\\Users\\sample\\sample.py', '\x82\xb5\x82\xe5\x82\xad\x82\xcf\x82\xf1', 'syokupan'] #args
C:\Users\sample\sample.py #args[0]
食パン #args[1]
syokupan #args[2]
"""
No tags for this post.

About
Amelt.net,LLCの創業者で、費用対効果の高い統合webマーケティングによりビジネスパートナーとして継続的にサポート。詳しいより。ブログの更新情報TwitterLinkedIn、またRSSfeedlyにてお知らせしていますのでフォローよろしくお願い致します。