Python中的引用编码错误字节
假设我输入了 line = line.decode('gb18030')
,然后出现了错误
UnicodeDecodeError: 'gb18030' codec can't decode bytes in position 142-143: illegal multibyte sequence
有没有什么简单的方法可以自动获取出错的字节?也就是说,有没有办法从内置命令或模块中获取 142
和 143
,或者 line[142:144]
?因为我比较确定每行最多只会有一个这样的错误,所以我最开始的想法是:
for i in range(len(line)):
try:
line[i].decode('gb18030')
except UnicodeDecodeError:
error = i
我不知道怎么准确地说,但 gb18030 的字节长度是可变的,所以一旦遇到中文字符(需要2个字节),这个方法就会失败。
2 个回答
2
这段代码是一个示例,展示了如何在程序中使用某些功能。它可能包含了一些变量、函数或者其他编程元素,目的是让你更好地理解代码是如何工作的。
在编程中,代码块通常用来组织和展示特定的逻辑或操作。你可以把它想象成一个小工具箱,里面放着你需要的工具,随时可以拿出来用。
记住,理解代码的关键在于多练习和尝试,慢慢你就会对这些内容越来越熟悉。
try:
line = line.decode('gb18030')
except UnicodeDecodeError, e:
print "Error in bytes %d through %d" % (e.start, e.end)
1
访问捕获到的异常对象的 start
和 end
属性。
u = u'áiuê©'
try:
l = u.encode('latin-1')
print repr(l)
l.decode('utf-8')
except UnicodeDecodeError, e:
print e
print e.start, e.end