JavaRush /مدونة جافا /Random-AR /ترميز النص ASCII (Windows 1251، CP866، KOI8-R) وUnicode (...
articles
مستوى

ترميز النص ASCII (Windows 1251، CP866، KOI8-R) وUnicode (UTF 8، 16، 32) - كيفية حل مشكلة المفرقعات

نشرت في المجموعة
سنتحدث اليوم عن مصدر krakozyabrs على موقع الويب وفي البرامج، وما هي ترميزات النص الموجودة وأي منها يجب استخدامها. دعونا نلقي نظرة فاحصة على تاريخ تطورها، بدءًا من ASCII الأساسي، بالإضافة إلى إصداراتها الموسعة CP866 وKOI8-R وWindows 1251 وانتهاءً بتشفيرات اتحاد Unicode الحديثة UTF 16 و8. ترميز النص ASCII (Windows 1251، CP866، KOI8-R) وUnicode (UTF 8، 16، 32) - كيفية حل مشكلة المفرقعات - 1جدول المحتويات: بالنسبة للبعض، قد تبدو هذه المعلومات غير ضرورية، ولكن هل تعرف عدد الأسئلة التي أتلقاها على وجه التحديد بخصوص krakozyabrs الزاحفة (مجموعة من الأحرف غير القابلة للقراءة). الآن ستتاح لي الفرصة لإحالة الجميع إلى نص هذه المقالة والعثور على أخطائي. حسنًا، استعد لاستيعاب المعلومات وحاول متابعة تدفق القصة.

ASCII - ترميز النص الأساسي للأبجدية اللاتينية

حدث تطوير ترميزات النص في وقت واحد مع تشكيل صناعة تكنولوجيا المعلومات، وخلال هذا الوقت تمكنوا من الخضوع للكثير من التغييرات. تاريخيًا، بدأ كل شيء بـ EBCDIC، الذي كان متنافرًا إلى حد ما في النطق الروسي، مما جعل من الممكن تشفير أحرف الأبجدية اللاتينية والأرقام العربية وعلامات الترقيم بأحرف التحكم. ولكن مع ذلك، ينبغي اعتبار نقطة الانطلاق لتطوير ترميزات النص الحديثة هي ASCII الشهير (الكود القياسي الأمريكي لتبادل المعلومات، والذي يُنطق عادةً باللغة الروسية باسم "اسأل"). فهو يصف أول 128 حرفًا الأكثر استخدامًا من قبل المستخدمين الناطقين باللغة الإنجليزية - الحروف اللاتينية والأرقام العربية وعلامات الترقيم. تتضمن هذه الأحرف الـ 128 الموضحة في ASCII أيضًا بعض أحرف الخدمة مثل الأقواس وعلامات التجزئة والعلامات النجمية وما إلى ذلك. في الواقع، يمكنك رؤيتها بنفسك: ترميز النص ASCII (Windows 1251، CP866، KOI8-R) وUnicode (UTF 8، 16، 32) - كيفية حل مشكلة المفرقعات - 2هذه الأحرف الـ 128 من الإصدار الأصلي لـ ASCII هي التي أصبحت المعيار، وفي أي ترميز آخر ستجدها بالتأكيد وستظهر بهذا الترتيب. لكن الحقيقة هي أنه بمساعدة بايت واحد من المعلومات، لا يمكنك تشفير 128، بل ما يصل إلى 256 قيمة مختلفة (اثنان أس ثمانية يساوي 256)، وبالتالي، بعد الإصدار الأساسي من Asuka، تم إنشاء مجموعة كاملة ظهرت سلسلة من ترميزات ASCII الموسعة ، والتي كان من الممكن فيها، بالإضافة إلى 128 حرفًا أساسيًا، يمكن أيضًا تشفيرها باستخدام أحرف الترميز الوطنية (على سبيل المثال، الروسية). ربما يكون من المفيد هنا أن نقول المزيد عن أنظمة الأعداد المستخدمة في الوصف. أولاً، كما تعلمون جميعاً، الكمبيوتر يعمل فقط مع الأرقام الموجودة في النظام الثنائي، أي مع الأصفار والواحدات ("الجبر البوليني"، إذا أخذه أي شخص في معهد أو مدرسة). يتكون البايت الواحد من ثمانية بتات، كل منها تمثل اثنين أس اثنين، بدءًا من الصفر، وحتى اثنين إلى السابع: ترميز النص ASCII (Windows 1251، CP866، KOI8-R) وUnicode (UTF 8، 16، 32) - كيفية حل مشكلة المفرقعات - 3 ليس من الصعب أن نفهم أن جميع المجموعات الممكنة من الأصفار والواحدات في مثل هذا البناء يمكن أن تكون يكون 256 فقط. إن تحويل رقم من النظام الثنائي إلى النظام العشري أمر بسيط للغاية. كل ما عليك فعله هو جمع كل القوى التي يتمتع بها اثنان مع القوى التي تعلوهما. في مثالنا، يتبين أن هذا يساوي 1 (2 أس صفر) زائد 8 (اثنان أس 3)، زائد 32 (اثنان أس خمسة)، زائد 64 (أس ستة)، زائد 128 (للقوة السابعة). المجموع هو 233 بالتدوين العشري. كما ترون، كل شيء بسيط جدا. ولكن إذا نظرت عن كثب إلى الجدول الذي يحتوي على أحرف ASCII، فسترى أنها ممثلة بترميز سداسي عشري. على سبيل المثال، تتوافق "العلامة النجمية" مع الرقم السداسي العشري 2A في لغة Aski. ربما تعلم أنه في نظام الأرقام السداسية العشرية، بالإضافة إلى الأرقام العربية، يتم أيضًا استخدام الحروف اللاتينية من A (يعني عشرة) إلى F (يعني خمسة عشر). حسنًا، لتحويل رقم ثنائي إلى رقم سداسي عشرياللجوء إلى الطريقة البسيطة التالية. يتم تقسيم كل بايت من المعلومات إلى جزأين من أربع بتات. أولئك. في كل نصف بايت، يمكن ترميز ستة عشر قيمة فقط (اثنتان إلى القوة الرابعة) بالنظام الثنائي، والتي يمكن تمثيلها بسهولة كرقم سداسي عشري. علاوة على ذلك، في النصف الأيسر من البايت، يجب حساب الدرجات مرة أخرى بدءًا من الصفر، وليس كما هو موضح في لقطة الشاشة. نتيجة لذلك، نحصل على الرقم E9 مشفر في لقطة الشاشة. آمل أن يكون مسار تفكيري وحل هذا اللغز واضحًا لك. حسنًا، دعونا الآن نواصل الحديث عن ترميزات النص.

إصدارات موسعة من ترميزات Asuka - CP866 وKOI8-R مع رسومات زائفة

لذلك، بدأنا نتحدث عن ASCII، الذي كان بمثابة نقطة البداية لتطوير جميع الترميزات الحديثة (Windows 1251، Unicode، UTF 8). في البداية، كان يحتوي على 128 حرفًا فقط من الأبجدية اللاتينية والأرقام العربية وشيء آخر، ولكن في النسخة الموسعة أصبح من الممكن استخدام جميع القيم الـ 256 التي يمكن تشفيرها في بايت واحد من المعلومات. أولئك. أصبح من الممكن إضافة رموز حروف لغتك إلى الأسكي. سنحتاج هنا إلى الاستطراد مرة أخرى لشرح سبب الحاجة إلى ترميز النص على الإطلاق وسبب أهميته. يتم تشكيل الأحرف الموجودة على شاشة جهاز الكمبيوتر الخاص بك على أساس شيئين - مجموعات من الأشكال المتجهة (التمثيلات) لأحرف مختلفة (وهي موجودة في ملفات ذات خطوط مثبتة على جهاز الكمبيوتر الخاص بك) والتعليمة البرمجية التي تسمح لك بسحب هذا الشكل بالضبط من هذه المجموعة من الأشكال المتجهة (ملف الخط)، الرمز الذي يجب إدراجه في المكان الصحيح. ومن الواضح أن الخطوط نفسها هي المسؤولة عن الأشكال المتجهة، لكن نظام التشغيل والبرامج المستخدمة فيه هي المسؤولة عن التشفير. أولئك. سيكون أي نص على جهاز الكمبيوتر الخاص بك عبارة عن مجموعة من البايتات، كل منها يشفر حرفًا واحدًا من هذا النص بالذات. البرنامج الذي يعرض هذا النص على الشاشة (محرر النصوص، المتصفح، وما إلى ذلك)، عند تحليل الكود، يقرأ ترميز الحرف التالي ويبحث عن نموذج المتجه المقابل في ملف الخط المطلوب، والذي يتم توصيله لعرض هذا وثيقة نصية. كل شيء بسيط ومبتذل. وهذا يعني أنه من أجل تشفير أي حرف نحتاجه (على سبيل المثال، من الأبجدية الوطنية)، يجب استيفاء شرطين: يجب أن يكون الشكل المتجه لهذا الحرف بالخط المستخدم، ويمكن ترميز هذا الحرف بترميزات ASCII الموسعة في بايت واحد. لذلك، هناك مجموعة كاملة من هذه الخيارات. فقط لترميز أحرف اللغة الروسية، هناك عدة أنواع من Aska الموسعة. على سبيل المثال، ظهر CP866 في الأصل ، والذي كان لديه القدرة على استخدام أحرف من الأبجدية الروسية، وكان نسخة موسعة من ASCII. أي أن الجزء العلوي منه يتطابق تمامًا مع الإصدار الأساسي من Aska (128 حرفًا لاتينيًا وأرقامًا وحماقة أخرى)، والذي يظهر في لقطة الشاشة أعلاه مباشرةً، ولكن الجزء السفلي من الجدول مع ترميز CP866 كان له المظهر المشار إليه في لقطة الشاشة أدناه وسمحت بتشفير 128 حرفًا آخر (الأحرف الروسية وجميع أنواع الرسومات الزائفة): ترميز النص ASCII (Windows 1251، CP866، KOI8-R) وUnicode (UTF 8، 16، 32) - كيفية حل مشكلة المفرقعات - 4 كما ترى، في العمود الأيمن تبدأ الأرقام بـ 8، لأن تشير الأرقام من 0 إلى 7 إلى الجزء الأساسي من ASCII (انظر لقطة الشاشة الأولى). وبالتالي، فإن الحرف السيريلي "M" في CP866 سيكون له الرمز 9C (يوجد عند تقاطع السطر المقابل مع 9 والعمود مع الرقم C في نظام الأرقام السداسي العشري)، والذي يمكن كتابته في بايت واحد من المعلومات ، وإذا كان هناك خط مناسب بأحرف روسية فسوف يظهر هذا الحرف في النص دون أي مشاكل. ومن أين جاء هذا المبلغ؟الصور الزائفة في CP866 ؟ بيت القصيد هو أن هذا الترميز للنص الروسي تم تطويره مرة أخرى في تلك السنوات الأشعث عندما لم تكن أنظمة التشغيل الرسومية منتشرة على نطاق واسع كما هي الآن. وفي Dosa وأنظمة تشغيل النصوص المماثلة، مكنت الرسوم الزائفة من تنويع تصميم النصوص بطريقة أو بأخرى على الأقل، وبالتالي فإن CP866 وجميع أقرانه الآخرين من فئة الإصدارات الموسعة من Asuka كثيرة فيه. تم توزيع CP866 بواسطة IBM، ولكن بالإضافة إلى ذلك، تم تطوير عدد من الترميزات لأحرف اللغة الروسية، على سبيل المثال، يمكن أن يعزى KOI8-R إلى نفس النوع (ASCII الممتد) : ترميز النص ASCII (Windows 1251، CP866، KOI8-R) وUnicode (UTF 8، 16، 32) - كيفية حل مشكلة المفرقعات - 5يظل مبدأ تشغيله كما هو ذلك الخاص بـ CP866 الموصوف سابقًا - يتم تشفير كل حرف من النص كبايت واحد. تُظهر لقطة الشاشة النصف الثاني من جدول KOI8-R، لأنه النصف الأول متوافق تمامًا مع Asuka الأساسية، والتي تظهر في لقطة الشاشة الأولى في هذه المقالة. من بين ميزات ترميز KOI8-R، يمكن ملاحظة أن الحروف السيريلية في جدولها ليست مرتبة أبجديًا، كما حدث في CP866. إذا نظرت إلى لقطة الشاشة الأولى (للجزء الأساسي، والذي تم تضمينه في جميع الترميزات الموسعة)، فستلاحظ أن الحروف الروسية في KOI8-R موجودة في نفس خلايا الجدول مثل الحروف المقابلة للأبجدية اللاتينية من الجزء الأول من الجدول. وقد تم ذلك لتسهيل التبديل من الأحرف الروسية إلى الأحرف اللاتينية عن طريق التخلص من بت واحد فقط (اثنان إلى القوة السابعة أو 128).

Windows 1251 - الإصدار الحديث من ASCII وسبب ظهور الشقوق

يرجع التطوير الإضافي لترميزات النص إلى حقيقة أن أنظمة التشغيل الرسومية كانت تكتسب شعبية واختفت الحاجة إلى استخدام الرسوم الزائفة فيها بمرور الوقت. ونتيجة لذلك، نشأت مجموعة كاملة، والتي، في جوهرها، كانت لا تزال نسخًا موسعة من Asuka (يتم تشفير حرف واحد من النص ببايت واحد فقط من المعلومات)، ولكن بدون استخدام رموز زائفة. وهي تنتمي إلى ما يسمى بترميزات ANSI، والتي تم تطويرها من قبل معهد المعايير الأمريكية. في اللغة الشائعة، تم استخدام الاسم السيريلي أيضًا للإصدار الذي يدعم اللغة الروسية. مثال على ذلك سيكون Windows 1251 . لقد اختلف بشكل إيجابي عن CP866 و KOI8-R المستخدم سابقًا في أن مكان الرموز الزائفة فيه تم أخذه من خلال رموز الطباعة الروسية المفقودة (باستثناء علامة اللكنة)، وكذلك الرموز المستخدمة في اللغات السلافية القريبة من الروسية (الأوكرانية والبيلاروسية وما إلى ذلك). ): Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 6نظرًا لهذه الوفرة من ترميزات اللغة الروسية، كان مصنعو الخطوط ومصنعو البرامج يعانون من الصداع باستمرار، وأنا وأنت، أيها القراء الأعزاء، غالبًا ما نواجه مشاكل مع نفس الأخطاء سيئة السمعة عندما كان هناك ارتباك مع الإصدار المستخدم في النص. في كثير من الأحيان، خرجوا عند إرسال واستقبال الرسائل عبر البريد الإلكتروني، الأمر الذي يستلزم إنشاء جداول تحويل معقدة للغاية، والتي، في الواقع، لا يمكن أن تحل هذه المشكلة بشكل أساسي، وغالبا ما يستخدم المستخدمون الترجمة الصوتية للأحرف اللاتينية للمراسلات من أجل تجنب الثرثرة سيئة السمعة عند استخدام الترميزات الروسية مثل CP866 أو KOI8-R أو Windows 1251. في الواقع، كانت التشققات التي ظهرت بدلاً من النص الروسي نتيجة الاستخدام غير الصحيح لترميز لغة معينة، والذي لا يتوافق مع الترميز الموجود في التي تم تشفير الرسالة النصية في الأصل. لنفترض أنك إذا حاولت عرض الأحرف المشفرة باستخدام CP866 باستخدام جدول رموز Windows 1251، فسوف تظهر نفس هذه الهراء (مجموعة لا معنى لها من الأحرف)، لتحل محل نص الرسالة تمامًا. Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 7يحدث موقف مماثل في كثير من الأحيان عند إنشاء مواقع الويب أو المنتديات أو المدونات وإعدادها، عندما يتم حفظ نص بأحرف روسية عن طريق الخطأ بالترميز الخاطئ المستخدم على الموقع افتراضيًا، أو في محرر النصوص الخاطئ، مما يضيف هفوة غير مرئية إلى الكود بالعين المجردة. في النهاية، سئم الكثير من الناس من هذا الوضع مع الكثير من الترميزات والحماقة الزاحفة باستمرار، وظهرت المتطلبات الأساسية لإنشاء تنوع عالمي جديد يحل محل جميع الترميزات الموجودة ويحل المشكلة مع ظهور نصوص غير قابلة للقراءة . بالإضافة إلى ذلك، كانت هناك مشكلة اللغات مثل الصينية، حيث كان عدد أحرف اللغة أكثر بكثير من 256.

Unicode - الترميزات العالمية UTF 8 و16 و32

لا يمكن وصف هذه الآلاف من أحرف مجموعة لغات جنوب شرق آسيا في بايت واحد من المعلومات المخصصة لترميز الأحرف في الإصدارات الموسعة من ASCII. نتيجة لذلك، تم إنشاء اتحاد يسمى Unicode (Unicode Consortium) بالتعاون مع العديد من قادة صناعة تكنولوجيا المعلومات (أولئك الذين ينتجون البرامج، والذين يقومون بتشفير الأجهزة، والذين يقومون بإنشاء الخطوط) الذين كانوا مهتمين بظهور ترميز نص عالمي. الإصدار الأول الذي تم إصداره تحت رعاية Unicode Consortium كان UTF 32 . الرقم الموجود في اسم التشفير يعني عدد البتات المستخدمة لتشفير حرف واحد. 32 بت تساوي 4 بايت من المعلومات التي ستكون مطلوبة لتشفير حرف واحد في ترميز UTF العالمي الجديد. ونتيجة لذلك، فإن نفس الملف الذي يحتوي على نص مشفر في الإصدار الموسع من ASCII وفي UTF-32، في الحالة الأخيرة، سيكون له حجم (وزن) أكبر بأربع مرات. هذا أمر سيء، ولكن الآن لدينا الفرصة لتشفير عدد من الأحرف باستخدام UTF يساوي اثنين إلى قوة الثلاثين ثانية ( مليارات الأحرف التي ستغطي أي قيمة ضرورية حقًا بهامش هائل). لكن العديد من البلدان التي لديها لغات المجموعة الأوروبية لم تكن بحاجة إلى استخدام هذا العدد الهائل من الأحرف في الترميز على الإطلاق، ومع ذلك، عند استخدام UTF-32، فإنها تلقت دون سبب زيادة في وزن المستندات النصية بمقدار أربعة أضعاف، ونتيجة لذلك، زيادة في حجم حركة المرور على الإنترنت وحجم البيانات المخزنة. وهذا كثير ولا يستطيع أحد تحمل مثل هذه الهدر. ونتيجة لتطوير Unicode، ظهر UTF-16 ، والذي حقق نجاحًا كبيرًا لدرجة أنه تم اعتماده افتراضيًا كمساحة أساسية لجميع الأحرف التي نستخدمها. ويستخدم بايتين لترميز حرف واحد. دعونا نرى كيف يبدو هذا الشيء. في نظام التشغيل Windows، يمكنك اتباع المسار "ابدأ" - "البرامج" - "البرامج الملحقة" - "أدوات النظام" - "جدول الأحرف". ونتيجة لذلك، سيتم فتح جدول يتضمن الأشكال المتجهة لجميع الخطوط المثبتة على نظامك. إذا قمت بتحديد مجموعة أحرف Unicode في "الخيارات المتقدمة"، فستتمكن من رؤية النطاق الكامل للأحرف المضمنة فيه لكل خط على حدة. بالمناسبة، من خلال النقر على أي منها، يمكنك رؤية رمزها المكون من بايتين بتنسيق UTF-16 ، والذي يتكون من أربعة أرقام سداسية عشرية: Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 8كم عدد الأحرف التي يمكن ترميزها في UTF-16 باستخدام 16 بت؟ 65,536 (اثنان أس ستة عشر)، وهذا هو الرقم الذي تم اعتماده كمساحة أساسية في Unicode. بالإضافة إلى ذلك، هناك طرق لتشفير حوالي مليوني حرف باستخدامه، لكنها اقتصرت على مساحة موسعة تبلغ مليون حرف من النص. ولكن حتى هذه النسخة الناجحة من ترميز Unicode لم تجلب الكثير من الرضا لأولئك الذين كتبوا، على سبيل المثال، البرامج باللغة الإنجليزية فقط، لأنه بعد الانتقال من النسخة الموسعة من ASCII إلى UTF-16، تضاعف وزن المستندات (بايت واحد لكل حرف في Aski وبايتين لنفس الحرف في YUTF-16). كان ذلك على وجه التحديد لإرضاء الجميع وكل شيء في اتحاد Unicode، حيث تقرر التوصل إلى ترميز متغير الطول . كان يسمى UTF-8. على الرغم من وجود الثمانية في الاسم، إلا أنه في الواقع له طول متغير، أي. يمكن ترميز كل حرف من النص في تسلسل يتراوح طوله من واحد إلى ستة بايت. من الناحية العملية، يستخدم UTF-8 النطاق من واحد إلى أربعة بايت فقط، لأنه لم يعد من الممكن حتى من الناحية النظرية تخيل أي شيء يتجاوز أربعة بايت من التعليمات البرمجية. يتم ترميز جميع الأحرف اللاتينية فيه في بايت واحد، تمامًا كما هو الحال في ASCII القديم الجيد. ما هو جدير بالملاحظة هو أنه في حالة ترميز الأبجدية اللاتينية فقط، فحتى تلك البرامج التي لا تفهم Unicode ستظل تقرأ ما تم ترميزه في YTF-8. أي أن الجزء الأساسي من Asuka تم نقله ببساطة إلى من بنات أفكار اتحاد Unicode. يتم ترميز الأحرف السيريلية في UTF-8 ببايتتين، وعلى سبيل المثال، يتم ترميز الأحرف الجورجية بثلاث بايتات. قام اتحاد Unicode، بعد إنشاء UTF 16 و8، بحل المشكلة الرئيسية - الآن لدينا مساحة رمز واحدة في خطوطنا . والآن يمكن لمصنعيها فقط ملئها بأشكال متجهة من أحرف النص بناءً على نقاط قوتها وقدراتها. في "جدول الأحرف" أعلاه، يمكنك أن ترى أن الخطوط المختلفة تدعم أعدادًا مختلفة من الأحرف. يمكن أن تكون بعض الخطوط الغنية بـ Unicode ثقيلة جدًا. لكنهم الآن يختلفون ليس في حقيقة أنهم تم إنشاؤهم لترميزات مختلفة، ولكن في حقيقة أن الشركة المصنعة للخط قد ملأت أو لم تملأ مساحة الكود الواحد بالكامل بأشكال متجهة معينة.

كلمات مجنونة بدلا من الحروف الروسية - كيفية اصلاحها

دعونا نرى الآن كيف يظهر krakozyabrs بدلاً من النص، أو بمعنى آخر، كيفية تحديد الترميز الصحيح للنص الروسي. في الواقع، يتم تعيينه في البرنامج الذي تقوم فيه بإنشاء أو تحرير هذا النص أو التعليمات البرمجية باستخدام أجزاء النص. لتحرير الملفات النصية وإنشائها، أستخدم شخصيًا محررًا جيدًا جدًا، في رأيي، لـ Html وPHP Notepad++ . ومع ذلك، يمكنها تسليط الضوء على بناء جملة مئات من لغات البرمجة والترميز الأخرى، كما أن لديها القدرة على التوسع باستخدام المكونات الإضافية. اقرأ مراجعة مفصلة لهذا البرنامج الرائع على الرابط المقدم. يوجد في القائمة العلوية لبرنامج Notepad++ عنصر "التشفيرات"، حيث ستتاح لك الفرصة لتحويل خيار موجود إلى الخيار المستخدم على موقعك افتراضيًا: Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 9في حالة وجود موقع على Joomla 1.5 والإصدارات الأحدث، كما كذلك في حالة وجود مدونة على WordPress، يجب عليك تجنب ظهور Krakozyabrov واختيار خيار UTF 8 بدون BOM . ما هي بادئة BOM؟ الحقيقة هي أنه عندما قاموا بتطوير ترميز YUTF-16، لسبب ما قرروا إرفاق شيء مثل القدرة على كتابة رمز الحرف بالتسلسل المباشر (على سبيل المثال، 0A15) والعكس (150A) . ولكي تفهم البرامج في أي تسلسل لقراءة الرموز، تم اختراع BOM (علامة ترتيب البايت أو، بمعنى آخر، التوقيع)، والذي تم التعبير عنه بإضافة ثلاث بايتات إضافية إلى بداية المستندات. في ترميز UTF-8، لم يتم توفير BOMs في اتحاد Unicode، وبالتالي فإن إضافة التوقيع (تلك البايتات الثلاثة الإضافية سيئة السمعة في بداية المستند) يمنع ببساطة بعض البرامج من قراءة الكود. لذلك، عند حفظ الملفات بتنسيق UTF، يجب علينا دائمًا تحديد الخيار بدون BOM (بدون توقيع). وبالتالي، سوف تحمي نفسك مقدما من الزحف من krakozyabrs . ما هو جدير بالملاحظة هو أن بعض البرامج في Windows لا يمكنها القيام بذلك (لا يمكنها حفظ النص بتنسيق UTF-8 بدون BOM)، على سبيل المثال، نفس Windows Notepad سيئ السمعة. فهو يحفظ المستند بتنسيق UTF-8، لكنه لا يزال يضيف التوقيع (ثلاثة بايتات إضافية) إلى بدايته. علاوة على ذلك، ستكون هذه البايتات هي نفسها دائمًا - اقرأ الكود بالتسلسل المباشر. ولكن على الخوادم، بسبب هذا الشيء الصغير، قد تنشأ مشكلة - سوف يخرج المحتالون. لذلك، لا تستخدم مفكرة Windows العادية تحت أي ظرف من الظروف.لتحرير المستندات الموجودة على موقعك إذا كنت لا تريد ظهور أي تشققات. أعتقد أن محرر Notepad ++ المذكور بالفعل هو الخيار الأفضل والأبسط، والذي ليس له أي عيوب عمليًا ويتكون فقط من المزايا. في Notepad++، عندما تحدد ترميزًا، سيكون لديك خيار تحويل النص إلى ترميز UCS-2، وهو قريب جدًا بطبيعته من معيار Unicode. أيضًا في برنامج "المفكرة" سيكون من الممكن تشفير النص بتنسيق ANSI، أي. فيما يتعلق باللغة الروسية، سيكون Windows 1251، الذي وصفناه بالفعل أعلاه، من أين تأتي هذه المعلومات؟ إنه مسجل في سجل نظام التشغيل Windows الخاص بك - وهو الترميز الذي تختاره في حالة ANSI، والذي تختاره في حالة OEM (بالنسبة للغة الروسية سيكون CP866). إذا قمت بتعيين لغة افتراضية أخرى على جهاز الكمبيوتر الخاص بك، فسيتم استبدال هذه الترميزات بتشفيرات مماثلة من فئة ANSI أو OEM لنفس اللغة. بعد حفظ المستند في برنامج Notepad++ بالتشفير الذي تحتاجه أو فتح المستند من الموقع لتحريره، ستتمكن من رؤية اسمه في الركن الأيمن السفلي من المحرر: Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 10لتجنب الارتباك ، بالإضافة إلى الخطوات الموضحة أعلاه سيكون من المفيد كتابة الكود المصدري في رأسه لجميع صفحات الموقع معلومات حول هذا التشفير بالذات، حتى لا يكون هناك أي ارتباك على الخادم أو المضيف المحلي. بشكل عام، تستخدم جميع لغات ترميز النص التشعبي باستثناء Html إعلان XML خاصًا يحدد ترميز النص.
<?xml version="1.0" encoding="windows-1251"?>
قبل تحليل الكود، يعرف المتصفح الإصدار المستخدم ومدى حاجته بالضبط لتفسير رموز الأحرف الخاصة بتلك اللغة. ولكن ما هو جدير بالملاحظة هو أنه إذا قمت بحفظ المستند في Unicode الافتراضي، فيمكن حذف إعلان XML هذا (سيعتبر الترميز UTF-8 إذا لم يكن هناك BOM أو UTF-16 إذا كان هناك BOM). في حالة مستند HTML، يتم استخدام عنصر Meta للإشارة إلى الترميز ، والذي يتم وضعه بين علامتي الفتح والإغلاق:
<head>
...
<meta charset="utf-8">
...
</head>
يختلف هذا الإدخال تمامًا عن المعيار الموجود في Html 4.01، ولكنه يتوافق تمامًا مع معيار Html 5، وسيتم فهمه بشكل صحيح بواسطة أي متصفحات مستخدمة حاليًا. من الناحية النظرية، من الأفضل وضع عنصر Meta الذي يشير إلى تشفير مستند Html في أعلى مستوى ممكن في رأس المستند ، بحيث بحلول الوقت الذي يواجه فيه النص الحرف الأول الذي ليس من ANSI الأساسي (والذي يُقرأ دائمًا بشكل صحيح وفي أي اختلاف)، يجب أن يكون لدى المتصفح بالفعل معلومات حول كيفية تفسير رموز هذه الأحرف. رابط إلى المصدر الأصلي: ترميز نص ASCII (Windows 1251، CP866، KOI8-R) وUnicode (UTF 8، 16، 32) - كيفية حل مشكلة المفرقعات
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION