Кодировать строки в Python - PullRequest
0 голосов
/ 20 мая 2018

Я хочу запустить свой код на терминале, но он показывает мне эту ошибку:

SyntaxError: Не-ASCII символ '\ xd8' в файле streaming.py в строке 72, но кодировка не объявлена;см. http://python.org/dev/peps/pep-0263/ для подробностей

Я пытался закодировать арабскую строку, используя это:

# -*- coding: utf-8 -*-

st = 'المملكة العربية السعودية'.encode('utf-8')

Для меня очень важно запустить его на терминале, чтобы яне могу использовать IDLE.

1 Ответ

0 голосов
/ 20 мая 2018

Проблема в том, что, поскольку вы непосредственно вставляете свои символы в файл python, интерпретатор (Python 2) пытается прочитать их как ASCII (даже перед тем, как кодировать, ему нужно определить литерал), что недопустимо.То, что вам нужно, это литерал Unicode, если вы вставляете байты не ASCII:

x=u'المملكة العربية السعودية' #Or whatever the corresponding bytes are
print x.encode('utf-8')

Вы также можете попробовать установить весь исходный файл для чтения как utf-8:

#/usr/bin/python
# -*- coding: utf-8 -*-

и не забудьте сделать его работоспособным, и, наконец, вы можете импортировать будущее из Python 3:

from __future__ import unicode_literal

вверху файла, поэтому строковыми литералами по умолчанию являются utf-8.Обратите внимание, что \xd8 отображается как phi в моем терминале, поэтому убедитесь, что кодировка верна.

...