Numerische Äquivalenz zwischen HTML Zeichen Entitäten und Delphi?

8

Die HTML-Zeicheneinheit 𝕒 :

kann mit diesem HTML-Code aus der Nummer 120146 erstellt werden:

%Vor%

Einige dieser erweiterten Zeichensymbole können aus dem gleichen Zahlenwert sowohl in HTML als auch in Delphi 10.1.2 erstellt werden. Zum Beispiel:

Sowohl ® als auch Chr(174) erzeugen das Symbolzeichen "eingetragene Marke" ®

Sowohl £ als auch Chr(163) erzeugen das "Pfund" Symbolzeichen £

usw.

Leider ist dies nicht der Fall mit der obigen Zahl 120146 , wo Chr(120146) in Delphi ein "lustiges chinesisches Symbol" erzeugt.

Wie kann ich also das obige 𝕒 -Zeichen aus der Zahl 120146 in Delphi erstellen? Und welches ist der numerische Bereich, in dem die obige numerische Äquivalenz zwischen HTML und Delphi funktioniert oder nicht funktioniert?

    
user1580348 21.09.2017, 19:06
quelle

1 Antwort

11

Dies ist 'MATHEMATISCHER DOPPELSTRECKE KLEIN A' (U + 1D552) . Es befindet sich außerhalb der Basic Multilingual Plane und wird daher in UFT-16 mithilfe eines Ersatzpaars codiert. Das bedeutet, dass zwei UTF-16-Zeichenelemente benötigt werden.

Sehen Sie sich Ihren Versuch an: Chr(120146) . Jetzt, 120146 > high(Word) ( = 65535 ), die Ihnen sagt, dass Ihr Code nicht erfolgreich sein kann. Denken Sie daran, dass jedes UTF-16-Zeichenelement 16 Bit groß ist. Es wäre schön, wenn der Compiler davor warnen würde. Geht es?

Der obige Link sagt Ihnen, wie Sie es verschlüsseln können. Es ist durch dieses Ersatzpaar gegeben:

  

0xD835 0xDD52

In Delphi würde das am einfachsten wie folgt geschrieben werden:

%Vor%

Wenn Sie mit dem UTF-32-Code als numerischer Wert beginnen, können Sie ihn mit TCharacter.ConvertFromUtf32 aus der Unit System.Character :

%Vor%

Offensichtlich kann das Argument für diese Funktion eine Variable sein.

Wenn Ihnen ein Großteil der obigen Unicode-Terminologie unbekannt ist, lesen Sie diese Artikel:

David Heffernan 21.09.2017, 19:37
quelle