我正在调用subprocess.popen()
xpdf程序pdfinfo,它返回的文本包括 8 位字符集上半部分中的一些字符。
我将结果传递给 JSON 序列化程序,当它到达字符\xae
(® 符号)时它会抱怨:
>>> import json
>>> json.dumps({'a':'Adobe\xae'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\app\python\2.7.3\lib\json\__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "c:\app\python\2.7.3\lib\json\encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "c:\app\python\2.7.3\lib\json\encoder.py", line 264, in iterencode
return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xae in position 5: invalid start byte
我怎样才能解决这个问题?我对编解码器以及我应该在哪里添加正确的信息来帮助 Python 弄清楚如何处理它感到非常困惑。
编辑:如果输入来自我(或至少是我的源代码),而不是另一个进程,我可以只使用 Unicode 字符串文字
>>> json.dumps({'a':u'Adobe\u00ae'})
'{"a": "Adobe\\u00ae"}'
Python 会处理得很好。
但我不知道给 Python 什么提示来将 pdfinfo 的输出解码为 Unicode。