2010-06-09 8 views
1

Évidemment, il doit y avoir quelque chose de stupide que je fais. Le graphique unicode pour les indices et les exposants dit # 00B2 est l'exposant 2, mais je reçois une sortie brouillée. 0078 est x, mais j'obtiens N, et 0120 est x. Est-ce que je lis un mauvais manuel?Les symboles Unicode qui se trompent


EDIT

$x = 'N'; 

print html_entity_decode($x, ENT_NOQUOTES, 'UTF-8') . "\n"; 
+0

pouvez-vous poster du code? quel encodage utilisez-vous? – Naveen

+0

Désolé, Robert, tous les lecteurs d'esprit sont en vacances – Andrey

Répondre

3

Je pense que vous pourriez être confus valeurs décimales et hexadécimal. Par exemple, hexadécimal 0x78 est minuscule x, mais décimal 78 (0x4E hexadécimal) est N. majuscules

En HTML, vous pouvez spécifier des entités Unicode soit comme décimales en utilisant &#n; ou hexadécimal avec &#xn; (où n est remplacé par le code de caractère décimal ou hexadécimal). Pour un exposant 2, vous pouvez utiliser ² ou ².

Dans votre exemple de code, vous décodez l'entité N. C'est une entité décimale, donc vous obtenez le résultat attendu (majuscule N). Les tables Unicode que vous avez liées pour utiliser hexadécimal. Pour obtenir un x minuscule, vous devez utiliser x comme entrée.

+0

ok .. thts gr8 .. & # 178 fonctionne .. pourriez-vous s'il vous plaît dites-moi si le tableau Unicode que j'utilise est correct .. http: //www.unicode. org/charts/PDF/U2070.pdf. On dit que 00B2 est en exposant 2. – robert

+0

@robert Le tableau est correct. 00B2 est en hexadécimal. Si vous utilisez '& # x00B2;', vous obtiendrez un exposant 2 (notez le 'x' supplémentaire). –

+0

@robert: ne manque-t-il pas 'x' pour spécifier la valeur hexadécimale? – Naveen