Frage

Bezieht sich der Begriff multibyte auf eine charset deren Charaktere können - müssen aber nicht - breiter als 1 Byte (zB UTF-8) oder auf Zeichensätze bezieht, die in jedem Fall größer als 1 Byte (zum Beispiel UTF-16)? Mit anderen Worten: Was ist gemeint, wenn jemand über Mehrbyte-Zeichensätze spricht

War es hilfreich?

Lösung

Der Begriff ist nicht eindeutig, aber in meiner Internationalisierung der Arbeit, wir in der Regel den Begriff „Mehrbyte-Zeichensätze“ vermieden Unicode-basierte Kodierungen zu verweisen. Im allgemeinen verwendete man den Begriff nur für Legacy-Codierungsschemata, die ein oder mehr Bytes mußten jedes Zeichen definieren (mit Ausnahme von Kodierungen, die nur ein Byte pro Zeichen erfordern).

Shift-JIS, jis, euc-jp, EUC-kr, zusammen mit chinesischen Codierungen sind in der Regel enthalten.

Die meisten der Legacy-Codierungen, mit einigen Ausnahmen, erfordert eine Art Zustandsmaschinenmodell (oder, einfacher, eine Seite Swapping-Modell) zu verarbeiten und rückwärts bewegt in einem Text-Stream ist kompliziert und fehleranfällig. UTF-8 und UTF-16 nicht unter diesem Problem leiden, wie UTF-8 kann mit einer Bitmaske und UTF-16 getestet werden kann, gegen eine Reihe von Ersatzpaaren getestet werden, so rückwärts bewegen, und in einem nicht-pathologischen Dokument weiterleiten sicher und ohne großen Aufwand durchgeführt werden.

Einige Legacy-Kodierungen für Sprachen wie Thai und Vietnamesisch, haben einige der Komplexität der Mehrbyte-Zeichensätze sind aber auf der Kombination von Zeichen wirklich nur gebaut, und sind im Allgemeinen nicht mit dem breiten Begriff in einen Topf geworfen „multibyte.“

Andere Tipps

  

Was ist gemeint, wenn jemand über Mehrbyte-Zeichensätze spricht?

Das ist, wie üblich, hängt davon ab, wer das Reden tut!

Logischerweise sollte es enthalten UTF-8, Shift-JIS, GB etc .: die mit variabler Länge Kodierungen. UTF-16 würde oft in dieser Gruppe nicht in Betracht gezogen werden (auch wenn es eine Art ist, was mit dem Surrogate, und sicherlich ist es mehrere Bytes, wenn sie in Bytes über UTF-16LE codiert / UTF-16 BE).

Aber in Microsoftland der Begriff typischerweise verwendet werden, würde ein variabler Länge Standardsystemcodepage bedeuten (für ältere Nicht-Unicode-Anwendungen, von denen es leider noch viel). In dieser Verwendung von UTF-8 und UTF-16 LE / UTF-16 BE nicht aufgenommen werden kann, weil die System-Codepage unter Windows nicht auf ein diesen Codierungen eingestellt werden kann.

Ja, in einigen Fällen „MBCS“ ist nicht mehr als ein Synonym für die System-Codepage, sonst bekannt (noch misleadingly) als „ANSI“. In diesem Fall wird ein „multibyte“ Zeichensatz tatsächlich etwas so trivial, wie cp1252 Westeuropa sein könnte, die nur ein Byte pro Zeichen verwendet!

Mein Rat: Verwenden Sie „variabler Länge“, wenn Sie meinen, dass, und vermeiden Sie den mehrdeutigen Begriff „multibyte“; wenn jemand anderes es nutzt die Sie benötigen um Klärung zu bitten, aber in der Regel jemand mit einem Windows-Hintergrund wird über ein Vermächtnis ostasiatischen Codepage wie cp932 sprechen (Shift-JIS) und nicht UTF.

Alle Zeichensätze, wo Sie haben eine 1 Byte = 1 Zeichenzuordnung nicht. Alle Unicode-Varianten, aber auch asiatische Zeichensätze sind multibyte.

Für weitere Informationen empfehle ich das Lesen diesen Wikipedia-Artikel .

Ein Multibyte-Zeichen ein Zeichen, deren mittlere Codierung mehr als 1 Byte erfordert. Dies bedeutet jedoch nicht, dass alle Zeichen, dass bestimmte Codierung werden die gleiche Breite (in Bytes). Z.B:. UTF-8 und UTF-16 codierte Zeichen kann manchmal mehrere Bytes verwenden, während alle UTF-32 codierte Zeichen immer verwenden 32 Bits

Referenzen:

Typischerweise ist das erstere, das heißt UTF-8-like. Für weitere Informationen siehe mit variabler Breite Codierung .

Die ehemalige -. Obwohl der Begriff „Codierung mit variabler Länge“ wäre passender

Ich benutze es im Allgemeinen auf ein beliebiges Zeichen zu verweisen, dass können haben mehr als ein Byte pro Zeichen.

  

Ein Mehrbyte-Zeichensatz kann aus jedem von einem Byte und zwei Byte   Figuren. Somit wird eine Mehrbyte-Zeichenkette ein Gemisch aus enthalten   Single-Byte und Double-Byte-Zeichen.

Ref: Single-Byte und Mehrbyte-Zeichensätze

UTF-8 ist Multi-Byte, was bedeutet, dass jedes englische Zeichen (ASCII) in 1 Byte gespeichert wird, während Nicht-Englisch Zeichen wie Chinesisch, Thai, in 3 Bytes gespeichert. Wenn Sie Chinesisch / Thai mit englischem, wie „ท t“ mischen, die ersten Thai Zeichen „ท“ verwendet 3 Bytes, während die zweiten englischen Zeichen „t“ nur 1 Byte verwendet. Menschen, die realisierten Multi-Byte-Codierung ausgelegt, dass englischer Charakter soll nicht in 3 Bytes gespeichert werden, während es in 1 Byte aufgrund der Verschwendung von Speicherplatz passen.

UTF-16 speichert jedes Zeichen entweder Englisch oder Nicht-Englisch in einer festen 2-Byte-Länge, so dass es nicht Multi-Byte ist, sondern ein breites Zeichen genannt. Es ist sehr geeignet für chinesische / Thai Sprachen, in denen jedes Zeichen vollständig in 2 Bytes paßt aber Druck auf utf-8 Konsolenausgabe benötigt eine Umwandlung von Breitzeichen zu Multi-Byte-Format, das von Funktion wcstombs () verwenden.

UTF-32 speichert jedes Zeichen in einer festen 4-Byte-Länge, aber niemand es verwenden, Zeichen speichern aufgrund einer Verschwendung von Speicherplatz.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top