1. المقدمة

بايثون لغة برمجة قوية لمعالجة السلاسل النصية وتُستخدم على مستوى العالم. ومع ذلك، عند التعامل مع النص الياباني أو أي نص متعدد اللغات في بايثون، من المهم اختيار ترميز الأحرف الصحيح. على وجه الخصوص، يدعم UTF‑8 عدة لغات، بما في ذلك اليابانية، ويقلل من خطر ظهور النص المشوش.
تشرح هذه الدليل كيفية التعامل مع ترميز UTF‑8 في بايثون وتوفر طرقًا عملية لمنع النص المشوش. يغطي مجموعة واسعة من المواضيع—من أساسيات الترميز وفك الترميز إلى إعدادات عمليات الملفات، ويتضمن اعتبارات خاصة بنظام ويندوز وحلولًا للأخطاء الشائعة، بحيث يمكنك تطبيقها عمليًا.

2. أساسيات ترميز الأحرف في بايثون

أساسيات ترميز الأحرف

ترميز الأحرف هو عملية تحويل الأحرف إلى بيانات يمكن للكمبيوتر فهمها. على سبيل المثال، الحرف ‘あ’ يُرمَّز إلى ثلاثة بايتات في UTF‑8 ويُمثَّل كبيانات ثنائية. في بايثون، يتم الترميز وفك الترميز باستخدام نوع str (سلسلة) ونوع bytes (بايتات).

الترميز وفك الترميز في بايثون

في بايثون، استخدم الدالة encode() لترميز السلاسل والدالة decode() لفك ترميز البايتات. يتيح ذلك التحويل بين بيانات النص وبيانات البايت.

مثال على الترميز

الشفرة التالية تقوم بترميز سلسلة إلى UTF‑8 وتعرضها كسلسلة بايتات.

text = "Using UTF-8 in Python"
encoded_text = text.encode("utf-8")
print(encoded_text)
# Output: b'PythonでUTF-8を使う'

مثال على فك الترميز

بعد ذلك، إليك كيفية تحويل سلسلة بايتات مُرمَّزة بـ UTF‑8 إلى السلسلة الأصلية.

decoded_text = encoded_text.decode("utf-8")
print(decoded_text)
# Output: Using UTF-8 in Python

من خلال فهم كيفية التحويل بين السلاسل والبايتات، ستتمكن من التعامل مع الترميزات بشكل صحيح.

3. التعامل مع UTF‑8 في بايثون

تحديد UTF‑8 لعمليات الملفات

عند العمل مع الملفات في بايثون، يُنصَح بتحديد ترميز UTF‑8 صراحةً. إذا لم تقم بتحديد ترميز، سيُستخدم الترميز الافتراضي المعتمد على النظام، مما قد يسبب نصًا مشوشًا.

مثال: كتابة إلى ملف

with open("sample.txt", "w", encoding="utf-8") as f:
    f.write("Hello, Python!")

مثال: قراءة من ملف

with open("sample.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print(content)
# Output: Hello, Python!

تحديد UTF‑8 لعمليات الملفات يساعد على منع النص المشوش في المحتوى متعدد اللغات، بما في ذلك اليابانية.

مخاطر نسيان تحديد الترميز

إذا لم يتم تحديد ترميز، سيُستخدم الترميز الافتراضي للنظام؛ وعلى نظام ويندوز خصوصًا، قد يُطبق Shift_JIS، مما يسبب نصًا مشوشًا. عند إجراء عمليات الملفات، اجعل عادةً تحديد encoding="utf-8" أمرًا دائمًا.

4. اعتبارات بيئات ويندوز

في ويندوز يكون الترميز الافتراضي للنظام غالبًا Shift_JIS، وعند التعامل مع بيانات تشمل اليابانية، قد يؤدي عدم تحديد UTF‑8 إلى نص مشوش. هنا نقدم تدابير مضادة باستخدام وضع UTF‑8 (PEP 540) والمتغيرات البيئية.

ضبط متغير البيئة PYTHONUTF8

لإجبار بايثون على استخدام الترميز UTF‑8 على ويندوز، اضبط متغير البيئة PYTHONUTF8 إلى القيمة “1”. سيؤدي ذلك إلى جعل جميع عمليات ملفات بايثون تستخدم UTF‑8.

كيفية ضبط متغير البيئة

  1. افتح نافذة متغيرات البيئة من حوار “تحرير متغيرات البيئة”، أضف متغيرًا جديدًا.
  2. أضف المتغير ضع اسم المتغير “PYTHONUTF8” والقيمة “1”.

مع هذا الإعداد، يصبح UTF‑8 هو الترميز الافتراضي، مما يقلل من خطر النص المشوش في عمليات الملفات.

年収訴求

5. تغيير الترميز الافتراضي في بايثون 3

بدءًا من بايثون 3.7، يمكن تمكين وضع UTF‑8 باستخدام الخيار -X utf8 أو متغير البيئة PYTHONUTF8. عند تمكينه، سيستخدم بايثون UTF‑8 كترميز افتراضي بغض النظر عن ترميز النظام.

تمكين وضع UTF‑8 باستخدام وسيط سطر الأوامر

python -X utf8 my_script.py

هذا الأمر يضمن أن يستخدم Python دائمًا ترميز UTF-8 ويمنع النص المشوه عبر بيئات مختلفة.

6. أسباب النص المشوه وكيفية إصلاحها

الأسباب الشائعة للنص المشوه

  1. عدم تطابق الترميز
  • يحدث هذا عندما يختلف ترميز الملف عن الترميز المحدد في Python.
  1. أخطاء الترميز/فك الترميز
  • يحدث خطأ عند محاولة فك ترميز بيانات مشفرة بترميز غير UTF-8 كـ UTF-8.

كيفية التعامل مع أخطاء الترميز

معالجة الأخطاء باستخدام errors="ignore" و errors="replace"

# Ignore encoding errors
decoded_text = encoded_text.decode("utf-8", errors="ignore")

# Handle encoding errors by replacing
decoded_text = encoded_text.decode("utf-8", errors="replace")

يمكنك تجنب الأخطاء التي تسبب النص المشوه باستخدام خيار ignore لتخطي الحروف المشكلة وخيار replace لإدراج حروف بديلة.

7. الملخص

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

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール