هل يجب أن يستخدم تطبيق الويب python الخاص بي Unicode لجميع السلاسل؟

StackOverflow https://stackoverflow.com/questions/827415

سؤال

أرى بعض أطر العمل مثل Django تستخدم Unicode في كل مكان، لذا يبدو أنها قد تكون فكرة جيدة.

من ناحية أخرى، يبدو الأمر بمثابة ألم كبير أن يكون لديك كل هذه الأشياء الإضافية التي تطفو في كل مكان.

ماذا ستكون المشكلة إذا لم أفعل هذا؟

هل هناك أي مشكلات ستظهر إذا قمت بذلك؟

أنا أستخدم Pylons الآن كإطار عمل خاص بي.

هل كانت مفيدة؟

المحلول

في بيثون 3، كافة السلاسل هي يونيكود. لذلك، يمكنك تحضير لهذا باستخدام سلاسل u'' في كل مكان كنت بحاجة إلى ذلك، وبعد ذلك عند الترقية في نهاية المطاف إلى بيثون 3 باستخدام أداة 2to3 جميع us سوف تختفي. وعليك أن تكون في وضع أفضل لأنك ستكون قد اختبرت بالفعل التعليمات البرمجية مع سلاسل Unicode.

وانظر <لأ href = "http://docs.python.org/3.0/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit" يختلط = "نوفولو noreferrer "> نص مقابل البيانات بدلا من مقابل يونيكود 8 بت لمزيد من المعلومات.

نصائح أخرى

ويمكنك تجنب u'' في بيثون 2.6 عن طريق القيام:

from __future__ import unicode_literals

وهذا سيجعل 'string literals' أن تكون الأشياء يونيكود، مثلما هو الحال في بيثون 3؛

ماذا ستكون المشكلة إذا لم أفعل هذا؟

أنا غربي أعيش في اليابان، لذا رأيت بنفسي ما هو مطلوب للعمل مع أحرف غير ASCII.المشكلة إذا كنت لا تستخدم سلاسل Unicode هي أن الكود الخاص بك سيكون محبطًا لأجزاء العالم التي تستخدم أي شيء آخر غير A-Z.لقد شعرت شركتنا بقدر كبير من الإحباط بسبب حصولها على بعض برامج الويب للقيام بالأحرف اليابانية دون إحداث فوضى كاملة فيها.

يحتاج المتحدثون باللغة الإنجليزية إلى القليل من الجهد لتقدير مدى روعة Unicode، ولكن جعل أجهزة الكمبيوتر في متناول جميع الثقافات واللغات يعد أمرًا رائعًا حقًا.

"مسكتك":

  1. تأكد من أن صفحات الويب الخاصة بالمخرجات تشير إلى الترميز المستخدم بشكل صحيح (على سبيل المثال.باستخدام رأس ترميز المحتوى)، ثم قم بتشفير جميع سلاسل Unicode بشكل صحيح عند الإخراج.تعد سلاسل Python 3 Unicode بمثابة تحسين كبير للقيام بذلك بشكل صحيح.

  2. افعل كل شيء باستخدام سلاسل Unicode، وقم بالتحويل إلى ترميز محدد فقط في اللحظة الأخيرة، عند إجراء الإخراج.اللغات الأخرى، مثل PHP، تكون عرضة للأخطاء عند التعامل مع Unicode على سبيل المثال.نموذج UTF-8.لنفترض أنه يتعين عليك اقتطاع سلسلة Unicode.إذا كان بتنسيق UTF-8 داخليًا، فهناك خطر من إمكانية قطع حرف متعدد البايت في منتصف الطريق، مما يؤدي إلى إخراج غير مهم.إن استخدام Python لسلاسل Unicode داخليًا يجعل من الصعب ارتكاب هذه الأخطاء.

<ع> استخدام Unicode هي داخليا وسيلة جيدة لتجنب المشاكل مع أحرف غير ASCII. تحويل في حدود طلبك (البيانات الواردة إلى يونيكود، والبيانات الصادرة إلى UTF-8 أو أيا كان). يمكن أبراج تفعل تحويل لك في كثير من الحالات: على سبيل المثال يمكن التحكم عودة سلاسل يونيكود بأمان. نماذج SQLAlchemy أن تعلن الأعمدة يونيكود.

وفيما يتعلق سلسلة حرفية في التعليمات البرمجية المصدر: البادئة ش هي عادة ليست ضرورية. يمكنك خلط بأمان الأجسام المشبوهة التي تحتوي على ASCII مع كائنات يونيكود. فقط للتأكد من كل سلسلة حرفية الخاص بك إما ASCII النقي أو هي ش "يونيكود".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top