2016-12-20 18 views
3

Я использую Python 2.7 и я пытаюсь напечатать арабские строки как этикак правильно напечатать арабский текст в PYTHON

print "ذهب الطالب الى المدرسة" 

это дает следующий результат:

ط°ظ‡ط¨ ط§ظ„ط·ط§ظ„ط¨ ط§ظ„ظ‰ ط§ظ„ظ…ط¯ط±ط³ط© 

Цель заключается в печати текст правильно, а не как печатать каждую строку. Итак, как я могу правильно напечатать строку или содержимое текстового файла в своей первоначальной форме? как:

ذهب الطالب الى المدرسة 
+3

Лучше переключиться на Python 3.5 – ForceBru

+1

@ForceBru «Python3.6 - это тот, который достоин назвать Python3» - Раймонд Хеттингер. Итак, переключитесь на Python3.6 – MYGz

ответ

0

Попробуйте это:

print u"ذهب الطالب الى المدرسة" 

Выход:

ذهب الطالب الى المدرسة 

Демо: https://repl.it/EuHM/0

строка python2.7 по умолчанию работает с UTF-8 набор символов. И арабский не включен в utf-8. Поэтому, если вы префикс его u, тогда он будет обрабатывать эту строку как строку Юникода.

+0

У меня получилось: UnicodeEncodeError: кодек ascii не может кодировать символы в позиции 0-2: порядковый номер не в диапазоне (128) –

+0

@MohammedSy Каков источник этой строки? Я тоже использую Python2.7, но я не получаю эту ошибку. – MYGz

+0

Я написал строку с моей клавиатуры, я думаю, что это не проблема с кодом, возможно, я получил эту проблему из оконной кодировки. –

0

В питона 2,7

в самом начале файла вы можете объявить:

# -*- coding: utf-8 -*- 
print "ذهب الطالب الى المدرسة" 

Обновлено:

Если вы можете запустить:

# -*- coding: utf-8 -*- 
s = "ذهب الطالب الى المدرسة" 
with open("file.txt", "w", encoding="utf-8") as myfile: 
    myfile.write(s) 

И файл сгенерированный «file.txt» содержит ct string, то это проблема с тем, что вы показываете в не сам python, я думаю, вы могли бы попробовать отобразить его во что-то еще, может быть, даже PyQt.

+0

та же проблема: ط ° ظ ‡ ط¨ ط§ظ" طط ط§ظ "ط¨ ط§ظ" ظ ‰ ط§ظ "ظ ... ط¯ط ± ط³ط © –

+0

Выводится вывод печати Python? Python может правильно испускать юникод, но это не значит, что все, что переводится в пиксели и символы на экране, становится правильным. – nigel222

0

Вам нужно добавить строку перед кодом

import sys 
reload(sys) 
sys.setdefaultencoding('utf-8') 
print "ذهب الطالب الى المدرسة" 
1

Вы можете либо префикс вашей строки с u как этого

print u"ذهب الطالب الى المدرسة" 

или сделать себе совместимо с Python3 и поместить его в верхней части файл

from __future__ import unicode_literals 

python27 strings (или bytestrings, поскольку они известны в Python3) не обрабатывают символы юникода. Оба оператора u и import делают вашу строку совместимой с юникодом.

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

  • Нет связанных вопросов^_^