繁体   English   中英

UnicodeDecodeError:“ ascii”编解码器无法解码位置46的字节0xe2:序数不在范围内

[英]UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 46: ordinal not in range

我知道周围有很多UnicodeDecodeError,但是我找不到任何人解释我的问题。而且这个错误从我无法重现的环境中随机跳出。

我想要的只是将两个字符串逐字节进行比较(我不需要任何编码和解码)。

请注意,我使用的是python2.7,str1来自Linux上的open('..','r')。read()。

希望您的建议。

  def diff_str(str1, str2):
      minlen = min(len(str1), len(str2))
      if str1 == str2:
        return "All %d bytes same" %minlen

      for diff_pos in xrange(minlen):
        if str1[diff_pos] != str2[diff_pos]:
          break

      k = 100

      to_ret = "(%d vs %d) chars\n" % (len(str1), len(str2))
      to_ret += "diff starts at %d:\n" % diff_pos
      # error jumps out at here..
      to_ret += str1[diff_pos:diff_pos+k] + "\n"
      to_ret += str2[diff_pos:diff_pos+k] + "\n"
    return to_ret

首先,请粘贴您要比较的字符串(或文件)并出错。

试试:

for uchar in your_string.decode('utf-8'):
    # compare chars

您想要二元比较吗? 然后尝试一下:

oneBuf = bytes(yourfile.read(1024))

然后比较字节bufs。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM