UTF8转换为php中的等效数字


UTF8 to equivalent number in php

我一直在搜索我的!!!off试图找到一个PHP函数来将UTF8转换为等效数字。我不完全确定该怎么称呼这个数字(我听说它被称为纵坐标?),但这里有一个例子:http://jrgraphix.net/r/Unicode/3040-309F

基本上,我试着用PHP读取一个UTF-8.txt文件,然后将每一行保存在一个数组中,这样我就可以处理它了

如果有人能帮助我,我将不胜感激,因为我还不太熟悉UTF8。

编辑:这就是我目前所掌握的:

echo "var TextCharacters = new Array();'n";
$LineArray = array();
$file_handle = fopen("lesson1.txt", "r");

while (!feof($file_handle)) 
{
  $line_of_text = fgets($file_handle);  
  array_push($LineArray, $line_of_text);
}
fclose($file_handle);
foreach($LineArray as $s)
{
    for($i = 0; $i < mb_strlen($s,"utf-8"); $i++)
    {
        $char = mb_substr($s, $i, 1, "utf-8");
        echo "alert(go(" . bin2hex(iconv('UTF-8', 'UCS-2', $char)) . "));";         
    }
}

您要查找的是Unicode代码点,即Unicode字符表中已知字符的数字标识符。实现这一点的"最便宜"方法是通过UCS-2字符编码,它将1:1的字节映射到Unicode代码点:

echo bin2hex(iconv('UTF-8', 'UCS-2', 'あ'));
// 3042

注意:返回的代码总是4个十六进制数字长(您可能喜欢也可能不喜欢),UCS-2不支持高于BMP的字符,即高于代码点FFFF的字符。

PHP中的UTF-8没有什么神奇之处。当您读取文件时,您将获得字节值(而不是解析为字符)。对已读取的数据进行迭代,然后使用ord()获取字节的十进制值。

如果要对UTF-8代码点执行此操作,可以使用mb_substr或iconv_subsr提取每个字符,然后使用ord()打印组成字符的每个字节的值。

更新:以完整的解决方案进行扩展:

utf8.测试:fooÆØÅござ

$utf8 = file_get_contents("utf8.test");
for ($i = 0; $i < mb_strlen($utf8, "utf-8"); $i++)
{
    $char = mb_substr($utf8, $i, 1, "utf-8");
    print($char);
    print("'n");
    for ($j = 0; $j < strlen($char); $j++)
    {
        print(dechex(ord($char[$j])));
    }
    print("'n'n");
}

输出:

f
66
o
6f
o
6f
Æ
c386
Ø
c398
Å
c385
ご
e38194
ざ
e38196

希望能有所帮助。