2017-09-21 12 views
8

Le HTML Caractère Entité 𝕒:Équivalence numérique entre les entités de caractères HTML et Delphi?

enter image description here

peut être créé à partir du numéro 120146 avec ce code HTML:

<!DOCTYPE html> 
<html> 
<style> 
body { 
    font-size: 20px; 
} 
</style> 
<body> 

<p>I will display &#120146;</p> 

</body> 
</html> 

Certains de ces symboles de caractères étendus peuvent être créés à partir de la valeur de nombre identique à la fois en HTML et en Delphi 10.1.2. Par exemple:

Les deux &#174; et Chr(174) créer le caractère de symbole "marque déposée" ®

Les deux &#163; et Chr(163) créer le caractère de symbole "livre" £

Etc.

Malheureusement, cela est pas le cas avec le numéro ci-dessus où Chr(120146) dans Delphi crée un "symbole chinois drôle".

Alors comment puis-je créer le symbole de caractère &aopf; ci-dessus à partir du numéro dans Delphi? Et quelle est la gamme numérique où l'équivalence numérique ci-dessus entre HTML et Delphi fonctionne ou ne fonctionne pas?

Répondre

11

Ceci est 'MATHEMATICAL DOUBLE-STRUCK SMALL A' (U+1D552). Il est en dehors du plan multilingue de base, et donc dans UFT-16 est codé en utilisant une paire de substitution. Ce qui signifie que deux éléments de caractères UTF-16 sont requis.

Regardez votre tentative: Chr(120146). Maintenant, 120146 > high(Word) (= 65535) qui vous indique que votre code ne peut pas réussir. Rappelez-vous que chaque élément de caractère UTF-16 a une taille de 16 bits. Ce serait bien si le compilateur a averti à ce sujet. Le fait?

Le lien ci-dessus vous indique comment le coder. Elle est donnée par cette paire de substitution:

0xD835 0xDD52

Dans Delphi qui serait plus facile à écrire:

#$D835#$DD52 

Si vous commencez avec le code UTF-32 une valeur numérique, puis vous pouvez le convertir en une chaîne Delphi en utilisant TCharacter.ConvertFromUtf32 de l'unité System.Character:

TCharacter.ConvertFromUtf32($1D552) 

Évidemment, l'argument de cette fonction peut être une variable.

Si une grande partie de la terminologie Unicode ci-dessus vous est inconnu, lire ces articles: