モジュールを使用OptParse
して文字列値を取得しています。OptParse
型指定された文字列のみをサポートし、str
文字列はサポートしませんunicode
。
それでは、スクリプトを次のように開始するとしましょう。
./someScript --some-option ééééé
'é' などのフランス語の文字を入力すると、コードで読み取られたときに がstr
トリガーされます。UnicodeDecodeError
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 99: ordinal not in range(128)
Unicode 組み込み関数を少しいじってみましたが、エラーが発生するか、文字が消えます。
>>> unicode('é');
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)
>>> unicode('é', errors='ignore');
u''
/文字列OptParse
を取得するために使用できることはありますか?unicode
utf-8
更新:
文字列を取得して印刷することはできるようですが、その文字列を (APSW モジュールを使用して) sqlite で使用しようとすると、何らかの方法で Unicode に変換しようとするとcursor.execute("...")
、エラーが発生します。
エラーの原因となるサンプル プログラムを次に示します。
#!/usr/bin/python
# coding: utf-8
import os, sys, optparse
parser = optparse.OptionParser()
parser.add_option("--some-option")
(opts, args) = parser.parse_args()
print unicode(opts.some_option)