ترميزات php مختلفة

  1. ترميزات php مختلفة الكتاب النصي المبتدئ لا يهتمون بشيء مثل الترميز. لذلك ، في بعض الأحيان ، يمكنك...
  2. إلى x64 (ويعرف أيضًا باسم andi)

ترميزات php مختلفة

ترميزات php مختلفة

الكتاب النصي المبتدئ لا يهتمون بشيء مثل الترميز. لذلك ، في بعض الأحيان ، يمكنك العثور على فوضى رهيبة ، عندما يتم الحصول على البيانات من قاعدة البيانات في ترميز واحد ، يتم تشكيل الصفحة في آخر ، ويتم إعطاء الخادم الثالث. نتيجة لذلك ، إذا كان يمكن فك تشفير الصفحة ، ثم على الأقل مرتين. فلماذا تحدث مثل هذه المشكلة وكيفية التغلب عليها؟

في الجزء الروسي في معظم الأحيان يمكنك أن تجد ما يسمى ترميز النوافذ. نسميها بشكل مختلف: windows-1251 ، cp1251 أو حتى ansi. التالي هو utf-8. يمكنك أيضًا العثور على الاسم unicode ، لكن هذا غير صحيح تمامًا ، لأن Unicode هو الاسم العام للمجموعة بأكملها (utf-8 ، utf-16 ، utf-32). وندرة شائعة جدًا هي koi8-r أو ببساطة koi-8 - ترميز Linux المشهور ذات مرة. بالطبع ، من الممكن أن نلتقي بشيء آخر في الجزء الروسي ، لكن هذا "تساهل" من قبل المؤلف.

الاختلاف الرئيسي بين utf-8 وغيرها (في المقام الأول windows-1251 و koi8-r) هو البايت الأخير ، والحد الأقصى لعدد الأحرف التي يمكن تمثيلها باستخدام هذه الترميزات يقتصر على 256. وغني عن القول أن النص الكامل قد لا يكون كافيا. ولغة تأشير النص الفائق وجدت حلا - استخدام ما يسمى فن الإستذكار. على سبيل المثال:

© - & copy؛

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

وبالتالي ، فإن مجموعة الشروط الأولية الأكثر راحة هي كما يلي: يجب أن يكون تشفير قاعدة البيانات ونصوص php ونصوص html / js للصفحة نفسها. بالطبع ، يمكنك استخدام أنواع مختلفة ، ولكن في هذه الحالة هناك خطر من حدوث خلط. لا يهم صفحة الرموز التي يتم استخدامها. إذا كان الموقع مخصصًا لجمهور ناطق بالروسية فقط ، فستكون windows-1251 كافية. خلاف ذلك ، فإن utf-8 سيكون الخيار المنطقي. الخيار الأول هو أكثر أو أقل وضوحا. سوف تتطلب الترميز متعدد البيبات بعض الإيماءات.

عند العمل مع utf-8 ، لن تعمل مفكرة المفكرة القياسية! الحقيقة هي أن هذا المحرر ، عند حفظ ملف في هذا الترميز ، يضيف توقيعًا إلى البداية - 3 أحرف ، ما يسمى bom (علامة ترتيب البايت) ، والتي يمكن استخدامها لتحديد الترميز عند فتح ملف. من الأفضل اختيار محرر آخر: notepad2 أو المفكرة ++ . في الإعدادات ، يجب عليك اختيار الحفظ بدون توقيع.

الخطوة المهمة التالية هي العمل مع قاعدة البيانات. من المرغوب فيه للغاية أن يتطابق ترميز الحقل الأساسي / الجدول / النص مع تشفير البرنامج النصي (يمكن أن يكون cp1251 أو utf-8 أو أي شيء آخر). إذا تم الحصول على البيانات من قاعدة البيانات في شكل "zyuk" ، فعلى الأرجح يختلف تشفير الاتصال عن البيانات المخزنة في قاعدة البيانات. سيساعد الاستعلام التالي في التغلب على الموقف (التنفيذ مباشرة بعد الاتصال بقاعدة البيانات):

إذا كان الموقع يستخدم windows-1251 ، يجب عليك تحديد ذلك - cp1251.

بشكل عام ، لا يوجد شيء صعب. فقط ، وظائف php القياسية ليست مصممة للعمل مع سلاسل متعددة البايت. ولكن هناك مكتبات قياسية تساعد في تصحيح الموقف: يكونف و المقاطع متعددة البايتات . بالنسبة للتعبيرات العادية ، يوجد أيضًا مفتاح تبديل ضروري يتم تنشيطه باستخدام المعدل u .

حسنا ، يتم الحصول على البيانات من قاعدة البيانات ، تتم كتابة البرامج النصية وفقا لجميع القواعد. يبقى إرسال العنوان الصحيح وعرض رمز الصفحة في متصفح المستخدم. نرسل عنوان ذلك:

header ('Content-Type: text / html؛ charset = utf-8')؛

إذا تم استخدام ترميز أحادي البايت ، فستكون قيمة مجموعة الأحرف مختلفة - windows-1251 . بعد ذلك ، لا ينبغي أن تبقى المشاكل.

بعض أبسط أمثلة العمل مع utf-8 في php:

مثال 1: iconv ، عدد الأحرف في كل سطر

$ s = 'string'؛ # string in utf-8 $ cnt1 = strlen ($ s)؛ # سيتضمن القيمة $ 12 cnt2 = iconv_strlen ($ s ، 'UTF-8') ؛ # القيمة الصحيحة ، 6

مثال 2: mbstring ، عدد الأحرف في السلسلة

$ s = 'string'؛ # string in utf-8 $ cnt1 = strlen ($ s)؛ # سيتضمن القيمة $ 12 cnt2 = mb_strlen ($ s ، 'UTF-8') ؛ # القيمة الصحيحة ، 6

المثال 3: التعبيرات العادية ، والبحث والاستبدال

$ s = 'String' ؛ # line in utf-8 $ s = preg_replace ('/ p / i'، 'd'، $ s)؛ لن يحدث استبدال في $ s = preg_replace ('/ p / iu'، 'd'، $ s)؛ # نتيجة قفص الاتهام الكلمة

يصف i modifier عملية البحث غير الحساسة لحالة الأحرف ، ويخبر معدّل u محرك التعبير العادي بالعمل مع سلاسل utf-8.

إذا قال شخص ما إن php لا يمكنه العمل مع utf-8 ، فسيكون ذلك خطأ. منذ عدة سنوات ، كنت أقوم بجميع مشاريعي في هذا الترميز ولم تكن هناك أية مشاكل على الإطلاق. استخدمت محركات البحث نفسها هذا الترميز الرائع منذ فترة طويلة.

الكتاب

حاليا 11 ساعة

إلى x64 (ويعرف أيضًا باسم andi)

التعليقات: 2846 المنشورات: 395 التسجيل: 02-04-2009