Mam bazę danych, która przechowuje nazwy gier wideo ze znakami Unicode, ale nie mogę się dowiedzieć, jak poprawnie uciec przed znakami Unicode podczas drukowania ich w odpowiedzi HTML.Drukowanie znaków Unicode PHP
Na przykład, kiedy wydrukować wszystkie gry z nazwą jak Uncharted, otrzymuję to:
Uncharted: Drake's Fortuneâ„¢
Uncharted 2: Among Thievesâ„¢
Uncharted 3: Drake's Deceptionâ„¢
ale powinien wyświetlić ten:
Uncharted: Drake's Fortune™
Uncharted 2: Among Thieves™
Uncharted 3: Drake's Deception™
Pobiegłem szybko funkcję escape JavaScript do zobacz, który znak Unicode jest ™
i okazało się, że jest to \u2122
.
Nie mam problemu z całkowitym odskoczeniem każdego znaku w ciągu znaków, jeśli mogę poprawnie wyświetlić znak ™
. Domyślam się jakoś odnaleźć reprezentację hex każdego znaku w łańcuchu i mają PHP czyni znaki Unicode, takie jak ten:
print "™";
proszę kierować do mnie poprzez najlepszego podejścia do ucieczki ciąg Unicode dla bycia HTML obsłudze. Zrobiłem coś podobnego dla JavaScript jakiś czas temu, ale JavaScript ma wbudowaną funkcję ucieczki i unescape.
Nie znam jednak żadnych funkcji PHP o podobnej funkcjonalności. Przeczytałem o funkcji ord, ale po prostu zwraca kod znaków ASCII dla danego znaku, a tym samym niewłaściwe wyświetlanie ™
lub ™
. Chciałbym, aby ta funkcja była wystarczająco uniwersalna, aby zastosować ją do dowolnego łańcucha zawierającego prawidłowe znaki Unicode.