UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 2: ordinal not in range(128)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 2: ordinal not in range(128)
我为我的 Mediawiki 安装安装了 pywikibot-core
(版本 2.0b3)。当我尝试 运行 包含 Unicode 文本的命令时出现错误。
我运行以下命令:
python pwb.py replace.py -regex -start:! "\[মুয়ায্যম হুসায়ন খান\]" "[মুয়ায্যম হুসায়ন খান]" -summary:"fix: মুয়ায্যম > মুয়ায্যম"
这是我得到的错误:
Traceback (most recent call last):
File "pwb.py", line 161, in <module>
import pywikibot # noqa
File "/var/www/html/banglapedia_bn/core/pywikibot/__init__.py", line 32, in <module>
from pywikibot import config2 as config
File "/var/www/html/banglapedia_bn/core/pywikibot/config2.py", line 285, in <module>
if arg.startswith("-verbose") or arg == "-v":
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 2: ordinal not in range(128)
使用 python3
而不是 python
。
您看到该错误是因为模块 config2.py
使用 from __future__ import unicode_literals
,使模块中的所有字符串成为 unicode 对象。但是,sys.args
是字节串,不受 __future__
导入的影响。
因此,因为 arg
是字节串,而 "-verbose"
和 "-v"
是两个 unicode 字符串,所以 arg
被隐式提升为 unicode,但这是失败的因为隐式转换仅适用于 ASCII。
相反,在Python 3中,所有字符串默认都是unicode,包括sys.args
。
我为我的 Mediawiki 安装安装了 pywikibot-core
(版本 2.0b3)。当我尝试 运行 包含 Unicode 文本的命令时出现错误。
我运行以下命令:
python pwb.py replace.py -regex -start:! "\[মুয়ায্যম হুসায়ন খান\]" "[মুয়ায্যম হুসায়ন খান]" -summary:"fix: মুয়ায্যম > মুয়ায্যম"
这是我得到的错误:
Traceback (most recent call last):
File "pwb.py", line 161, in <module>
import pywikibot # noqa
File "/var/www/html/banglapedia_bn/core/pywikibot/__init__.py", line 32, in <module>
from pywikibot import config2 as config
File "/var/www/html/banglapedia_bn/core/pywikibot/config2.py", line 285, in <module>
if arg.startswith("-verbose") or arg == "-v":
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 2: ordinal not in range(128)
使用 python3
而不是 python
。
您看到该错误是因为模块 config2.py
使用 from __future__ import unicode_literals
,使模块中的所有字符串成为 unicode 对象。但是,sys.args
是字节串,不受 __future__
导入的影响。
因此,因为 arg
是字节串,而 "-verbose"
和 "-v"
是两个 unicode 字符串,所以 arg
被隐式提升为 unicode,但这是失败的因为隐式转换仅适用于 ASCII。
相反,在Python 3中,所有字符串默认都是unicode,包括sys.args
。