Форум сайта python.su
0
Добрый день!
Библиотека twisted возвратила мне такую штуку:
type(s)
<type 'str'>
>>> s
'\x04B\x045\x04A\x04B\x00\r\x00\n'
>>> print s.decode('utf-8')
B5AB>>> s = unicode('тест', 'utf-8')
>>> s
u'\u0442\u0435\u0441\u0442'
>>> s.decode('utf-8', "ignore")
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)Офлайн
33
Pr_Alexey
Я предполагаю, что там содержится слово ‘тест’.
>>> 'тест' '\xd1\x82\xd0\xb5\xd1\x81\xd1\x82'
>>> print('\x04B\x045\x04A\x04B\x00\r\x00\n') B5AB
Pr_AlexeyЭто необычная строка, а Unicode.
Как это перекодировать в обычную строку:
Отредактировано Budulianin (Сен. 1, 2014 14:29:53)
Офлайн
0
BudulianinРазве уникод строки не должы начинаться на u? К тому же я сделал для нее type (см. выше), пишет что str. Как-то запутался. В общем моя цель: преобразовать это в строку str в utf-8 кодировке.
Это необычная строка, а Unicode.
Офлайн
33
Pr_AlexeyТы “принтуешь”
Разве уникод строки не должы начинаться на u?
>>> print(u'asd') asd
Pr_Alexey
print s.decode('utf-8')
Pr_AlexeyУ тебя и так тип str и скорее всего кодировка utf-8
В общем моя цель: преобразовать это в строку str в utf-8 кодировке.
Отредактировано Budulianin (Сен. 1, 2014 16:20:07)
Офлайн
34
Pr_AlexeyЕсли вы хотите, то вы можете напечатать юникодовые строки как последовательность символов \uXXXX.
Разве уникод строки не должы начинаться на u?
>>> print u'тест'.encode('unicode-escape') \u0442\u0435\u0441\u0442 >>> print '\u0442\u0435\u0441\u0442'.decode('unicode-escape') тест >>>
Офлайн
857
>>> b'\x04B\x045\x04A\x04B\x00\r\x00\n'.decode('utf-16be') 'тест\r\n' >>>
Офлайн
33
Откуда там такая кодировка? Специфичный проц? Или это заголовок какого-то протокола?
Офлайн