العمل مع ترميز UTF-8 في مصدر Python

سئل على ٩ يونيو ٢٠١١  ·  تمت مشاهدة 898.3k مرة  ·  مصدر

Nullpoet picture
في ٩ يونيو ٢٠١١

يعتبر:

$ cat bla.py 
u = unicode('d…')
s = u.encode('utf-8')
print s
$ python bla.py 
  File "bla.py", line 1
SyntaxError: Non-ASCII character '\xe2' in file bla.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

كيف يمكنني التصريح عن سلاسل UTF-8 في شفرة المصدر؟

الإجابات

Michał Niklas picture
في ٩ يونيو ٢٠١١
827

في رأس المصدر يمكنك التصريح بما يلي:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
....

تم وصفه في PEP 0263 :

ثم يمكنك استخدام UTF-8 في السلاسل:

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

u = 'idzie wąż wąską dróżką'
uu = u.decode('utf8')
s = uu.encode('cp1250')
print(s)

هذا الإعلان غير مطلوب في Python 3 لأن UTF-8 هو ترميز المصدر الافتراضي (انظر PEP 3120 ).

بالإضافة إلى ذلك ، قد يكون من المفيد التحقق من أن محرر النصوص الخاص بك يقوم بترميز الكود الخاص بك بشكل صحيح في UTF-8. خلاف ذلك ، قد يكون لديك أحرف غير مرئية لم يتم تفسيرها على أنها UTF-8.

Ranaivo picture
في ١٨ فبراير ٢٠١٤
89

لا تنس التحقق مما إذا كان محرر النصوص الخاص بك يقوم بترميز الكود الخاص بك بشكل صحيح في UTF-8.

خلاف ذلك ، قد يكون لديك أحرف غير مرئية لم يتم تفسيرها على أنها UTF-8.