3

Versuchen, umzuformulieren: Können Sie jede kombinierende Zeichenkombination in einem Codepunkt abbilden?Gibt es eine Codierung in Unicode, bei der jedes "Zeichen" nur ein Codepunkt ist?

Ich bin neu in Unicode, aber es scheint mir, dass es keine Codierung, Normalisierung oder Darstellung gibt, wo ein Zeichen in Unicode jeweils ein Codepunkt wäre. Ist das richtig?

Stimmt das auch für Basic Multilingual Plane?

+0

Jedes Unicode "Zeichen" ist nur ein "Codepunkt". Die Terminologie kann jedoch verwirrend sein. "Charakter" kann auf verschiedene Arten interpretiert werden, so dass Unicode den Begriff "Codepunkt" für einen spezifischen Sinn für "Charakter" entwickelte. Nun kann eine "Glyphe" aus mehr als einem "Codepunkt" bestehen und ein "Codepunkt" kann mehr als einmal als "Codiereinheit" codiert sein. In UTF-8 ist eine "Code-Einheit" 8 Bits und in UTF-16 ist eine "Code-Einheit" 16 Bits. In UTF-32 (selten verwendet) muss nicht zwischen "Codepunkten" und "Codeeinheiten" unterschieden werden, aber selbst dann können Sie aus mehreren "Codepunkten" ein einzelnes "Glyph" machen. – hippietrail

+0

@hippietrail Meinst du * Charakter * das * abstrakte Zeichen * im Unicode [spec Abschnitt 3.4] (http://www.unicode.org/versions/Unicode6.2.0/ch03.pdf#G2212)?Ich frage das, weil ich mich verwirre ... – Eonil

+0

@Eonil: Ich meine erstens * Zeichen * = * Codepunkt * und zweitens bedeuten * Zeichen * = * Glyphe *. Um welche von beiden fragst du? – hippietrail

Antwort

7

Wenn Sie ein Zeichen == eine Zahl meinen (dh: jedes Zeichen wird durch die gleiche Anzahl von Bytes/Wörtern/Was-Haben-Du dargestellt): in UCS-4 wird jedes Zeichen durch ein 4- Bytenummer. Das ist viel mehr als groß genug für jeden Charakter, der durch einen einzigen Wert repräsentiert wird, aber es ist ziemlich verschwenderisch, wenn Sie keine der höheren Zeichen benötigen.

Wenn Sie die Kompatibilitätsfolgen meinen (zB: wobei e + ´ => & eacute;): Für die meisten der Kombinationen, die in bestehenden modernen Sprachen verwendet werden, gibt es Ein-Zeichen-Darstellungen. Wenn du deine eigene Sprache erfindest, könntest du Probleme bekommen ... aber wenn du bei denen bleibst, die die Leute tatsächlich benutzen, wird es dir gut gehen.

+0

Kann ich die 100% Mapping-Garantie auch in die NFC-Normalisierungsform bekommen? – Eonil

+1

Es gibt keine 100% Mapping Garantie. Es kommt einfach vor, dass es Codepunkte gibt, die Vorkompositionen der Kombinationen darstellen, die Sie in modernen Sprachen sehen. NFC wird diese Precomposites in den meisten Fällen bevorzugen. Aber wenn Sie einen Charakter und einen Akzent haben, die normalerweise nicht zusammenpassen (zum Beispiel 'z̏'), oder ein paar Akzente für ein Zeichen haben, wird ein Codepunkt es nicht schneiden. – cHao

+0

Das ist einfach nicht wahr. Es gibt viele Kombinationen in bestehenden modernen Sprachen ohne Einzelzeichen-Darstellungen. Besonders in anderen Skripten als Latein, wie indische Schriften, Thai, Lao usw. Ich würde die kyrillischen Vokale mit akuten Akzenten als ziemlich üblich betrachten, da sie in so ziemlich jedem russischen Wörterbuch vorkommen, aber sie haben keine einzelnen Codepunktdarstellungen. – hippietrail

1

Es scheint mir, dass es keine Codierung, Normalisierung oder Darstellung gibt, wo ein Zeichen in Unicode jeweils ein Codepunkt wäre. Ist das richtig?

auf Sinne der Bedeutung des Wortes, abhängig. „Zeichen“ Unicode hat die Konzepte der abstrakter Zeichen (Definition 7 in Kapitel 3 des Standard: „Eine Einheit von Information für die Organisation, die Kontrolle verwendet, , oder Darstellung von Textdaten ") und codierten Zeichen (Definition 11:" Eine Zuordnung (oder Zuordnung) zwischen einem abstrakten Zeichen und einem Codepunkt "). Ein Zeichen nie ist ein Codepunkt, aber für viele Codepunkte existiert ein abstraktes Zeichen, das dem Codepunkt zugeordnet ist, wobei dieses Mapping "codiertes Zeichen" genannt wird. Aber (Definition 11, Absatz 4): "Eine einzige abstrakter Charakter auch dargestellt werden kann durch eine Folge von Codepunkten“

Gilt das auch für Basic Multilingual Plane auch?

Es gibt keinen konzeptionellen Unterschied in Bezug auf abstrakte oder codierte Zeichen zwischen dem BMP und den anderen Ebenen. Die obige Aussage gilt für alle Teilmengen des Codespaces.

Je nach Anwendung, haben Sie zwischen den Begriffen Glyphe, grapheme Cluster, grapheme, abstrakten Charakter, codierte Zeichen, Codepunkt, Skalarwert, zu unterscheiden Codeeinheit und Byte. Alle diese Konzepte sind unterschiedlich, und es gibt keine einfache Zuordnung zwischen ihnen. Insbesondere gibt es fast nie eine Eins-zu-Eins-Zuordnung zwischen diesen Entitäten.

6

Können Sie jedes Kombinationszeichen Kombination in einen Codepunkt zuordnen?

Jeder Kombination Kombination? Wie würden Sie Ihre vorgeschlagene Codierung stellen die Zeichenfolge "à ̴ ̵ ̶ ̷ ̸ ̡ ̢ ̧ ̨ ̛ ̖ ̗ ̘ ̙ ̜ ̝ ̞ ̟ ̠ ̣ ̤ ̥ ̦ ̩ ̪ ̫ ̬ ̭ ̮ ̯ ̰ ̱ ̲ ̳ ̹ ̺ ̻ ̼ ͇ ͈ ͉ ͍ ͎ ́ ̂ ̃ ̄ ̅ ̆ ̇ ̈ ̉ ̊ ̋ ̌ ̍ ̎ ̏ ̐ ̑ ̒ ̓ ̔ ̽ ̾ ̿ ̀ ́ ͂ ̓ ̈ ́ ͆ ͊ ͋ ͌ ̕ ̚ ͅ ͏ ͓ ͔ ͕ ͖ ͙ ͚ ͐ ͑ ͒ ͗ ͛ ͣ ͤ ͥ ͦ ͧ ͨ ͩ ͪ ͫ ͬ ͭ ͮ ͯ ͘ ͜ ͟ ͢ ͝ ͞ ͠ ͡ „? (Ein 'a' mit mehr als hundert Kombinationszeichen?) Es ist einfach nicht praktikabel.

Es gibt jedoch eine Menge "vorkomposierter" Zeichen in Unicode, wie áçñü. Die Normalisierungsform C verwendet diese, wenn immer möglich, anstelle der zerlegten Version.