【环境】
-
Windows 10 x64
-
Python 3.6.3
【关于 gb18030 编码】
-
GB 18030 wiki:https://zh.wikipedia.org/wiki/GB_18030
-
单字节,其值从0到0x7F。
-
双字节,第一个字节的值从0x81到0xFE,第二个字节的值从0x40到0xFE(不包括0x7F)。
-
四字节,第一个字节的值从0x81到0xFE,第二个字节的值从0x30到0x39,第三个字节从0x81到0xFE,第四个字节从0x30到0x39。
【解码错误的处理方式】
-
错误:
1
|
UnicodeDecodeError:
'gb18030'
codec can't decode byte
0xff
in
position
129535
: illegal multibyte sequence
|
-
异常对象:UnicodeDecodeError
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import
codecs
# gb18030 乱码 handler
def
WalkerGB18030ReplaceHandler(exc):
print
(
'exc.start: %d'
%
exc.start)
print
(
'exc.end: %d'
%
exc.end)
print
(
'exc.encoding: %s'
%
exc.encoding)
print
(
'exc.reason: %s'
%
exc.reason)
text
=
''
for
ch
in
exc.
object
[exc.start:exc.end]:
print
(
'ch:'
)
print
(ch)
text
+
=
(
'0x%02X'
%
ch)
return
|