سؤال

ومعيار يونيكود لديها ما يكفي من رمز نقطة في أن تحتاج 4 بايت لتخزين كل منهم. هذا ما يفعله ترميز UTF-32. ومع ذلك، فإن UTF-8 ترميز بطريقة أو بأخرى ساقيها هذه إلى مساحات أصغر بكثير باستخدام ما يسمى "ترميز متغير العرض".

في الواقع، فإنه يدير لتمثيل الأحرف 127 الأولى من US-ASCII في بايت واحد فقط والتي تبدو تماما مثل ASCII الحقيقي، حتى تتمكن من تفسير الكثير من النص أسكي كما لو كانت UTF-8 دون أن تفعل أي شيء لذلك. خدعة متقنة. فكيف يفعل ذلك العمل؟

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

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

المحلول

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

0xxx xxxx    A single-byte US-ASCII code (from the first 127 characters)

وومتعددة البايت رمز نقطة لكل منهما بداية مع عدد قليل من البتات التي تقول أساسا "مهلا، كنت بحاجة لقراءة أيضا البايت التالي (أو اثنين، أو ثلاثة) لمعرفة ما أنا." وهم:

110x xxxx    One more byte follows
1110 xxxx    Two more bytes follow
1111 0xxx    Three more bytes follow

وأخيرا، البايتات التي تتبع تلك المدونات بداية كل نظرة من هذا القبيل:

10xx xxxx    A continuation of one of the multi-byte characters

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

نصائح أخرى

RFC3629 - UTF-8، شكل تحويل ISO 10646 هو المرجع النهائي هنا و لديه كل التفسيرات.

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

<اقتباس فقرة>   

وكان UTF-8 نظام آخر للتخزين   سلسلة الخاص بك من نقطة رمز Unicode،   هذه الأرقام U + السحر، في ذاكرة   باستخدام 8 بايت قليلا. في UTF-8، كل   يتم تخزين نقطة رمز 0-127 في   بايت واحد. نقاط فقط كود 128 و   يتم تخزين أعلاه باستخدام 2، 3، في الواقع،   تصل إلى 6 بايت.

المطور المطلق الدنيا كل البرامج على الاطلاق، إيجابيا يجب أن تعرفه عن يونيكود ومجموعات الأحرف ( لا أعذار!)

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