2011-02-05 2 views
0

У меня есть некоторые японские слова, которые я хочу, чтобы преобразовать в UTF-8, как показано ниже:питона UTF-8 японский

jap_word1 = u'中山' 
jap_word2 = u'小倉' 

print jap_word1.encode('utf-8') # Doesn't work 
print jap_word2.encode('utf-8') # Prints properly 

Почему это, что одно слово может быть правильно преобразованы в UTF-8 и печатается показывать одни и те же символы, но не другие?

(Я использую Python 2.6 на Windows 7 Ultimate)

+1

Предположительно, вторая печать предназначена для слова 2? – DSM

+0

Спасибо за указание. Исправлено. – haha

+1

Я настоятельно рекомендую использовать «jp» как аббревиатуру для японского, а не «jap», чтобы избежать расистских коннотаций. В этом контексте ослепительно очевидно, что вы имеете в виду ... но я все еще заметил. И jp является стандартным. – Crowbeak

ответ

0

Поскольку консоль не в UTF-8. Запустите chcp 65001 перед запуском.

+0

Я использую Python IDLE. Самое забавное, что только некоторые символы преобразуются правильно, но не остальные. – haha

1

Много вещей необходимо выровнять, чтобы напечатать символы правильно:

  1. Что кодирование сценарий сохраняется в?
  2. У вас есть оператор # coding: xxxx в вашем скрипте, где xxxx соответствует кодировке, в которой сохранен файл?
  3. Поддерживает ли ваш выходной терминал кодировку? import sys; print sys.stdout.encoding a. Если нет, можете ли вы изменить кодировку консоли? (chcp команда на Windows)
  4. Использует ли шрифт поддержку символов?

Сохранение скрипта в UTF-8, это работает как в PythonWin, так и в IDLE.

# coding: utf-8 
jap_word1 = u'中山' 
jap_word2 = u'小倉' 

print jap_word1 
print jap_word2 

Интересно, что я получил свои результаты с .encode('utf-8') добавлены как отпечатки в IDLE, но он правильно работал в Pythonwin, чье действие по умолчанию окно вывода поддерживает UTF-8.

Idle - странный зверь. sys.stdout.encoding на моей системе производит 'cp1252', который не поддерживает азиатские символы, но при печати в UTF-8 он печатает первое слово неправильно, а второе справа.

+0

Когда я делаю это с консоли python в Ubuntu, у меня тоже нет никаких проблем. Но для Python IDLE в Windows 7, доброта ... – haha

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