2016-10-02 3 views
0

Я знаю, что есть много UnicodeDecodeError, но я не могу найти никого, объясняющего мою проблему .. И эта ошибка случайно перескочила с среду, которую я не могу воспроизвести.UnicodeDecodeError: кодек 'ascii' не может декодировать байт 0xe2 в позиции 46: порядковый номер не в диапазоне

Я хочу просто сравнить два байта строки с байтом (я не хочу кодирования и декодирования).

Обратите внимание, что я использую python2.7, а str1 - от открытого ('..', 'r'). Read() в 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 

ответ

0

Во-первых, пожалуйста, вставьте строку (или файл), который вы хотите, чтобы сравнить и сделать ошибки.

У попробовать:

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

ли вы хотите бинарную сравнительный? Затем дайте ему попробовать:

oneBuf = bytes(yourfile.read(1024)) 

Затем сравните байтовые байфы.

Смежные вопросы

 Смежные вопросы