我正在使用 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
字符串?
似乎可以成功获取并打印该字符串,但是当尝试使用 SQLite (使用 APSW 模块) 时,它会尝试通过 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)