2013-12-09 4 views
2

Я пытаюсь преобразовать строковый тип в Unicode в Python. Я хочу, чтобы он работал на любую неанглийскую строку, например, на японском, китайском или испанском языках.преобразование строки в unicode в python

Например, у japanese_var есть несколько японских символов [ド キ ュ メ ン ト を 翻 訳 し ま す].

печать это даст,

'\x83h\x83L\x83\x85\x83\x81\x83\x93\x83g\x82\xf0\x96|\x96\xf3\x82\xb5\x82\xdc\x82\xb7' 

Проверка его тип,

type(japanese_var) 
<type 'str'> 

Как я могу преобразовать его в тип 'Юникод'?

Должен ли я использовать japanese_var.decode ('mbcs')? Каковы могут быть последствия использования этого кода, поскольку я буду использовать его на разных платформах ОС & разных иностранных языков?

Я использую Python 2.5.4

Я читаю параметр, который может быть любой не-английски строка файла из его свойств.

+1

Вам необходимо знать кодировку строки. На самом деле нет простого решения, которое будет работать для любой строки. – interjay

+0

Какой питон? Python 2 или 3? – sureshvv

+0

Откуда взялась эта строка? (Если это буквальный текст, придерживайтесь 'u' прямо перед ним, хотя вам может быть нужно быть осторожным с кодировкой исходного кода.) – user2357112

ответ

4

Вам необходимо знать кодировку входной строки. Нет надежного универсального решения.

Кодирование должно быть доступно из источника входной строки. Например, если вы берете текст с веб-страницы, кодировка должна указываться как часть HTTP Content-Type, либо как заголовок ответа HTTP с сервера, либо как тег <meta> в источнике страницы.

Как только вы знаете кодировку, используйте метод decode.

Эта строка, как представляется, Shift-JIS:

>>> x = '\x83h\x83L\x83\x85\x83\x81\x83\x93\x83g\x82\xf0\x96|\x96\xf3\x82\xb5\x82\xdc\x82\xb7' 
>>> print x.decode("shift-jis") 
ドキュメントを翻訳します 
0

Он работал для меня, передавая "MBCS" для декодирования для любого языка.

Спасибо, ребята, за вашу помощь.

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