UnicodeDecodeError:' ascii'编解码器不能解码位置46中的字节0xe2:序数不在范围内

时间:2016-10-02 04:00:37

标签: python

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

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

请注意,我使用python2.7和str1来自open(' ..',' r')。读取()在Linux上。

希望你的意见..

  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

1 个答案:

答案 0 :(得分:0)

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

试一试:

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

你想要二进制比较吗?然后尝试一下:

oneBuf = bytes(yourfile.read(1024))

然后比较字节bufs。