我有一些代码,我处理HTTP标头。 我知道标题值应采用ISO-8859-1编码, 虽然我想确保程序在没有的情况下优雅地运行。
最初,我将解码包装在try..catch
的{{1}}中。
UnicodeDecodeError
然而,当我来测试这种行为时,我无法模拟错误情况。未定义为the iso-8859-1 codepage的字节似乎仍然可以成功解码。
try:
value = header.decode('iso-8859-1')
except UnicodeDecodeError:
...
所以:
>>> b'\x80'.decode('iso-8859-1')
u'\x80'
并假设它总是成功返回一个unicode字符串吗?try..catch
wrt超出代码页字节的预期行为是否可能是特定于平台的?.decode('iso-8859-1')
?注意:针对Python 2.7和3.4进行了测试。
答案 0 :(得分:1)
似乎它不会给你带来麻烦:
In [1]: for i in xrange(9999):
...: chr(i).decode('iso-8859-1')
...:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-1-c3c072235f24> in <module>()
1 for i in xrange(9999):
----> 2 chr(i).decode('iso-8859-1')
3
ValueError: chr() arg not in range(256)