Unicodeblock Kombinierende diakritische Zeichen in UTF-8
-
Hallo,
normal kann man diese Zeichen http://de.wikipedia.org/wiki/Unicodeblock_Kombinierende_diakritische_Zeichen normal kombiniert über die Tastatur eingeben, sofern es sich über das Kombinierende Gravis (`) handelt.
Das Ganze in UTF-8.
Aber weiß jemand, wie ich diese kombinierten Zeichen berechnen kann, so dass ich z.b. ein a mit einem Macron (¯) kombiniere?
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das hört sich nach Normalisierung an. Wenn ich mich nicht irre, enthält die Unicode-Spezifikation konkrete Algorithmen für verschiedene Normalisierungsaufgaben.
Selber implementieren ist aber normalerweise nicht sinnvoll, außer man schreibt eine eigene Unicode-Library.
-
Ich versteh nicht genau was du machen willst. Willst du ein a mit einem ¯ darstellen?
Dann siehe: https://de.wikipedia.org/wiki/Kombinierendes_Zeichen#Darstellung Einfach das Zeichen und dann das "Kombinierende Zeichen" danach stellen.
Willst du ein a¯ in die kanonische Variante umwandeln? Dann musst du, wie Christoph schon gesagt hat, den String normalisieren. Das geht über Tabellen (Unicode Character Database) und das genaue Verfahren ist im Unicode-Standard beschrieben. Aber nimm lieber Bibliotheken wie libunistring oder ICU (bzw. boost.locale http://www.boost.org/doc/libs/1_49_0/libs/locale/doc/html/index.html ). Wobei je nach Normalisierungsformat alle Zeichen in die kombinierte Variante verwandelt werden.
-
Unter Windows kann man auch alternativ NormalizeString verwenden.