我正在使用一个函数来确定不同孟加拉语字符的十进制 unicode 值。函数为:
function uniord($u) {
$k = mb_convert_encoding($u, 'UCS-2LE', 'UTF-8');
$k1 = ord(substr($k, 0, 1));
$k2 = ord(substr($k, 1, 1));
return $k2 * 256 + $k1;
}
它适用于所有孟加拉语字符,除了 ড়
unicode 值为 09DC 十六进制和 2524 十进制。当我从控制台/文本区域字段中获取此字符时,这非常有效,例如:
$data = $_POST['data'];
echo uniord($data);
但是当从变量中使用此字符时显示不同的 unicode 值,例如:
$data_one = 'ড়';
echo uniord($data_one);
这提供了十六进制的 Unicode 值 09A1 或十进制的 2465,这是一个类似的词,但不是我想要的字符值。
如何解决这个问题。谢谢
U+09DC 的规范分解为 U+09A1 U+09BC。听起来您的文本编辑器正在使用分解的正常形式保存文本。查看是否可以更改设置以便能够使用组合的普通表单进行保存,或尝试使用其他文本编辑器。
或使用转义码:"'xe0'xa7'x9c"