سؤال

هل يشير مصطلح Multibyte إلى إحضار أحرفه - ولكن لا يجب أن يكون - أوسع من 1 بايت، (على سبيل المثال UTF-8) أو هل يشير إلى مجموعات الأحرف الموجودة في أي حال أوسع من 1 بايت (مثل UTF -16) بمعنى آخر: ما هو المقصود إذا أتحدث أي شخص عن مجموعات الأحرف متعددة بايت؟

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

المحلول

المصطلح غامض، ولكن في أعمال التدويل الخاصة بي، عادة ما تجنب مصطلح "مجموعات الأحرف متعددة بايت" للإشارة إلى الترميزات المستندة إلى Unicode. بشكل عام، استخدمنا المصطلح فقط لخطط الترميز القديمة التي تحتوي على بايت واحد أو أكثر لتحديد كل حرف (باستثناء الترميزات التي تتطلب بايت واحد فقط لكل حرف).

عادة ما يتم تضمين Shift-JIS، JIS، EUC-JP، EUC-KR، إلى جانب الترميزات الصينية.

تتطلب معظم الترميزات القديمة، مع بعض الاستثناءات، نوعا من طراز آلة الحالة (أو، أكثر من مجرد نموذج تبديل الصفحة) لمعالجة، والانتقال إلى الوراء في مجرى النص معقد وخطأ خطأ. لا تعاني UTF-8 و UTF-16 من هذه المشكلة، حيث يمكن اختبار UTF-8 مع Bitmask ويمكن اختبار UTF-16 مقابل مجموعة من أزواج البديلة، لذلك يتنقل إلى الوراء وإلى الأمام في وثيقة غير مرضية يتم القيام بأمان دون تعقيد كبير.

يوجد عدد قليل من الترميزات القديمة ولغات مثل التايلاندية والفيتنامية، بعض تعقيد مجموعات الأحرف متعددة البياضات ولكنها مبنية فقط على الجمع بين الأحرف، ولا يتم تجميعها عموما مع المصطلح الواسع "multibyte".

نصائح أخرى

ما هو المقصود ما إذا كان أي شخص يتحدث عن مجموعات الأحرف متعددة بايت؟

ذلك، كالعادة، يعتمد على من يفعل الحديث!

منطقيا، يجب أن يتضمن UTF-8، Shift-JIS، GB، إلخ.: الترميزات ذات الطول المتغير. في كثير من الأحيان لن يتم النظر في UTF-16 في هذه المجموعة (على الرغم من أنه على الرغم من أن هذا النوع من نوعه هو، فما مع البديل؛ وبالتأكيد هو بايت متعددة عند ترميزها في بايت عبر UTF-16LE / UTF-16).

ولكن في MicrosoftLAND، سيتم استخدام المصطلح عادة أكبر ليعني أداة ترميز النظام الافتراضي بطول متغير (لتطبيقات غير Unicode القديمة، منها بالأسف لا يزال هناك الكثير). في هذا الاستخدام، لا يمكن تضمين UTF-8 و UTF-16LE / UTF-16BE لأن Codepage النظام على Windows لا يمكن تعيينه على أي من هذه الترميزات.

في الواقع، في بعض الحالات "MBCs" ليس أكثر من مرادف لشركة CODEPAGE النظام، والمعروفة خلاف ذلك (حتى أكثر مضللة) ك "ANSI". في هذه الحالة، يمكن أن تكون مجموعة أحرف "Multibyte" في الواقع شيء تافهة مثل CP1252 أوروبا الغربية، والتي تستخدم فقط بايت لكل حرف!

نصيحتي: استخدم "طول المتغير" عندما تقصد ذلك، وتجنب مصطلح "multibyte" الغامض؛ عندما يستخدم شخص آخر، ستحتاج إلى طلب التوضيح، ولكن عادة ما يتحدث شخص ما مع خلفية Windows عن شفرة شرق شرق آسيا مثل CP932 (SHIFT-JIS) وليس UTF.

جميع مجموعات الأحرف حيث لا تملك رسم خرائط لحرف 1 بايت = 1. جميع المتغيرات Unicode، ولكن أيضا مجموعات الأحرف الآسيوية هي متعددة بايت.

لمزيد من المعلومات، أقترح القراءة هذه المادة ويكيبيديا.

سوف تعني شخصية متعددة بايت شخصية تتطلب ترميزها أكثر من 1 بايت. ومع ذلك، لا يعني هذا أن جميع الأحرف تستخدم هذا الترميز المحدد سيكون لها نفس العرض (من حيث البايتات). على سبيل المثال: قد تستخدم الطابع المشفر UTF-8 و UTF-16 بايت متعددة في بعض الأحيان بينما الكل أحرف مشفرة UTF-32 دائما استخدام 32 بت.

مراجع:

عادة ما يشبه السابق، أي UTF-8. لمزيد من المعلومات، انظر ترميز عرض المتغير.

السابق - على الرغم من أن مصطلح "ترميز الطول المتغير" سيكون أكثر ملاءمة.

أنا عموما استخدامها للإشارة إلى أي حرف ذلك يمكن لديك أكثر من بايت لكل حرف.

قد تتكون مجموعة أحرف متعددة البايت من كل من أحرف بايت واثنين من البايت. وبالتالي قد تحتوي سلسلة أحرف متعددة بايتات على مزيج من أحرف البايت والبايت المزدوجة.

المرجع: مجموعات حرف واحد البايت و multibyte

UTF-8 هو متعدد البايت، مما يعني أنه يتم تخزين كل شخصية إنجليزية (ASCII) في 1 بايت بينما يتم تخزين الشخصية غير الإنجليزية مثل الصينية، التايلاندية، في 3 بايت. عندما تخلط الصينية / التايلاندية مع اللغة الإنجليزية، مثل "ท T"، فإن الطابع التايلاندي الأول "ท" يستخدم 3 بايت بينما يستخدم حرف اللغة الإنجليزية الثاني فقط 1 بايت. أدرك الأشخاص الذين قاموا بتصميم ترميز متعدد البايات أنه لا ينبغي تخزين الشخصية الإنجليزية في 3 بايت بينما يمكن أن يصلح في 1 بايت بسبب مضيعة مساحة التخزين.

يقوم UTF-16 بتخزين كل حرف إما باللغة الإنجليزية أو غير الإنجليزية في طول ثابت 2 بايت حتى لا يكون متعدد البايت ولكن يسمى حرفا واسعا. مناسبة جدا للغات الصينية / التايلاندية حيث تناسب كل حرف بالكامل في 2 بايت ولكن الطباعة إلى إخراج وحدة التحكم UTF-8 تحتاج إلى تحويل من شخصية واسعة إلى تنسيق متعدد البايت باستخدام الوظيفة WCStombs ().

يخزن UTF-32 كل حرف في طول ثابت 4 بايت ولكن لا أحد يستخدمه لتخزين الشخصية بسبب مضيعة لمساحة التخزين.

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