在php中为同一个字符显示不同的unicode值

时间:2016-02-18 05:02:06

标签: php unicode utf-8 special-characters utf

我正在使用一个函数来确定不同孟加拉语字符的十进制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.当我从console / textarea字段中获取此字符时,这非常有用。例如:

                $data = $_POST['data'];
                echo uniord($data);

但是当从变量中使用此字符时显示不同的unicode值。例如:

                $data_one = 'ড়';
                echo uniord($data_one);

这提供了十六进制的09A1或十进制的2465的unicode值,这是另一个相似的词,但不是我想要的字符值。

如何解决这个问题。感谢

1 个答案:

答案 0 :(得分:0)

U+09DC具有规范分解为U + 09A1 U + 09BC。听起来您的文本编辑器正在使用decomposed normal form保存文本。查看是否可以使用组合的普通表单更改设置以进行保存,或尝试使用其他文本编辑器。

或使用转义码:"\xe0\xa7\x9c"