php Получить кодовую точку Unicode для символа UTF-8

0

Мне нужно получить шестнадцатеричный код кодировки unicode для глифов.

То, что я делаю, работает большую часть времени:

$hex = dechex(unpack('V', iconv('UTF-8', 'UCS-4LE', $glyph)[1]);

Где ut терпит неудачу:

ȳ ȳ ȳ ȳ ȳ

Все те возвращаются 233, но 233 верны только в первом случае. Остальные - разные глифы, которые выглядят иначе.

Кажется, что он терпит неудачу, когда речь идет о нескольких диакритических знаках, но иногда это становится правильным.

Почему это не так?

Теги:
unicode

1 ответ

1
Лучший ответ

Поскольку способ составления текста зависит от программного обеспечения, которое его составляло, и если это программное обеспечение не дает гарантий или вы не ставите своей целью нормализовать ввод, вы действительно не можете делать предположения.

Даже в самом простом (первом) примере вход может быть законно составлен из одного символа LATIN SMALL LETTER Y WITH MACRON '(U + 0233) или двух кодовой комбинации LATIN SMALL LETTER Y (U + 0079) и COMBINING MACRON ( U + 0304). В каждом случае вы получите разные результаты, хотя вход будет визуально и семантически идентичным (единственное различие состоит в том, что оно является байтовым, что является детальностью реализации).

  • 0
    Спасибо, я думаю, теперь я понимаю, означает, что я должен переписать некоторый код, но я делал это неправильно, так что ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню