Похоже, что он кодируется кодировкой utf-16.
>>> '\x00t\x00e\x00s\x00t\[email protected]\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'.decode('utf-16')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\utf_16.py", line 16, in decode
return codecs.utf_16_decode(input, errors, True)
UnicodeDecodeError: 'utf16' codec can't decode byte 0x00 in position 28: truncated data
и укороченный:
>>> '\x00t\x00e\x00s\x00t\[email protected]\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'[1:].decode('utf-16')
u'[email protected]'
>>> '\x00t\x00e\x00s\x00t\[email protected]\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'[1:].decode('utf-16-le')
u'[email protected]'
>>> '\x00t\x00e\x00s\x00t\[email protected]\x00g\x00m\x00a\x00i\x00l\x00.\x00c\x00o\x00m\x00'.decode('utf-16-be', 'ignore')
u'[email protected]'
Усеченные в одном или другом направлении; маленький конец или большой конец. –
Если я должен был догадаться об усечении, я бы обвинил что-то, разделяющее пробелы. Кодировка UTF-16 символа пробела будет '' \ x00 ''или' '\ x00'' в зависимости от порядка байтов, который будет« разбить »прямо. Разумеется, любые другие ascii-пробелы. Вы не можете безопасно разбить закодированную байтовую строку, особенно не UTF-16. 'strip' имеет аналогичный потенциал, чтобы калечить вещи. –