Какова кодировка этой строки, 'base64' или 'utf-8' ??? как я могу получить его читабельным - PullRequest
2 голосов
/ 18 января 2010
print "4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf".decode('base64')#no

спасибо


и

, если у меня есть '4-12 个 英 字母 字母 字母 和 下划线'

как я могу получить строку'4-12' u4e2a 'u5b57 \ u6bcd \ u3001 \ u5b57 \ u5b57 \ u4e0b \ u5212 \ u7ebf'

является

print '4-12个英文字母、数字和下划线'.decode('what')#

я пишу:

print u'4-12个英文字母、数字和下划线'.encode('unicode-escape')

it print

4-12\xb8\xf6\xd3\xa2\xce\xc4\xd7\xd6\xc4\xb8\xa1\xa2\xca\xfd\xd7\xd6\xba\xcd\xcf\xc2\xbb\xae\xcf\xdf

не строка "4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf

print u'4-12个英文字母、数字和下划线'.decode('utf-8').encode('unicode-escape')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "encodings\utf_8.pyo", line 16, in decode
UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-27: ordinal not in range(128)

no 'u' также ошибка:

print '4-12个英文字母、数字和下划线'.decode('utf-8').encode('unicode-escape')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "encodings\utf_8.pyo", line 16, in decode
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb8 in position 4: unexpected code byte

все в порядке, спасибо

>>> print '4-12个英文字母、数字和下划线'.decode('gb2312').encode('unicode-escape')
4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf

Ответы [ 5 ]

1 голос
/ 18 января 2010

Я предполагаю, что это представление Python 3.x для строки Юникода.

В Python 2.x вам понадобится u"" в начале строки Unicode.

1 голос
/ 18 января 2010

Кодируется как Unicode-литерал Python:

>>> print u"4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf"
4-12个英文字母、数字和下划线
1 голос
/ 18 января 2010

В этой строке написано «4-12 个 英文 字母 、 数字 和 下划线», просто введя ее в интерпретатор JavaScript (в данном случае, инспектор WebKit).любая закодированная в base64 информация.

Было ли что-то еще, что вы хотели узнать?

1 голос
/ 18 января 2010

Это представление в Юникоде. Попробуйте .decode('unicode-escape').

EDIT:

То, что вы используете для второго декодирования, зависит от настроек вашего терминала / консоли. 'utf-8' является разумной отправной точкой, затем кодируйте, используя 'unicode-escape', чтобы получить escape-последовательности Юникода.

0 голосов
/ 18 января 2010

Ваш окончательный комментарий:

>>> print '4-12个英文字母、数字和下划线'.decode('gb2312').encode('unicode-escape')

будет работать, только если ваш исходный файл сохранен в кодировке gb2312. Убедитесь, что вы заявили, что в верхней части вашего файла вы можете использовать строки Unicode:

# coding: gb2312
print u'4-12个英文字母、数字和下划线'.encode('unicode-escape')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...