2

pywikibot-core为我的 Mediawiki 安装安装了(版本 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)
4

1 回答 1

2

使用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.

于 2015-04-17T17:55:34.897 回答