php 获取 UTF-8 字形的 unicode 代码点
php Get unicode codepoint for UTF-8 glyph
我需要获取字形的十六进制 unicode 代码点。
我正在做的大多数时间是:
$hex = dechex(unpack('V', iconv('UTF-8', 'UCS-4LE', $glyph)[1]);
ut 失败的地方:
Ş
??
˳̂
コ̀
˳͂
所有这些 return 233 但 233 仅在第一个实例中是正确的。其他的是不同的字形,呈现方式不同。
当涉及多个变音符号时似乎会失败,但有时会正确。
为什么会这样失败?
因为文本的组成方式取决于组成它的软件,除非该软件提供保证或者您将其指向 normalize 输入,否则您真的无法做出假设。
即使在最简单的(第一个)示例中,输入也可以合法地由单个字形 LATIN SMALL LETTER Y WITH MACRON' (U+0233) 或两个代码点组合 LATIN SMALL LETTER Y (U+0079) ) 和组合 MACRON (U+0304)。在每种情况下你会得到不同的结果,即使输入在视觉上和语义上是相同的(唯一的区别是字节方面的,这是一个实现细节)。
我需要获取字形的十六进制 unicode 代码点。
我正在做的大多数时间是:
$hex = dechex(unpack('V', iconv('UTF-8', 'UCS-4LE', $glyph)[1]);
ut 失败的地方:
Ş ?? ˳̂ コ̀ ˳͂
所有这些 return 233 但 233 仅在第一个实例中是正确的。其他的是不同的字形,呈现方式不同。
当涉及多个变音符号时似乎会失败,但有时会正确。
为什么会这样失败?
因为文本的组成方式取决于组成它的软件,除非该软件提供保证或者您将其指向 normalize 输入,否则您真的无法做出假设。
即使在最简单的(第一个)示例中,输入也可以合法地由单个字形 LATIN SMALL LETTER Y WITH MACRON' (U+0233) 或两个代码点组合 LATIN SMALL LETTER Y (U+0079) ) 和组合 MACRON (U+0304)。在每种情况下你会得到不同的结果,即使输入在视觉上和语义上是相同的(唯一的区别是字节方面的,这是一个实现细节)。