UTF8在PHP当量数(UTF8 to equivalent number in php)

2019-10-17 01:18发布

我一直在寻找我的! 关闭试图找到一个PHP函数UTF8转换为同等数量。 我不完全知道该怎么拨打该号码(听说它叫纵坐标?),但下面有一个例子: http://jrgraphix.net/r/Unicode/3040-309F

基本上我试图读取PHP中的UTF-8文本文件,然后保存在一个数组的每一行,这样我就可以与它周围乱。

如果有人能帮助我这一点,将非常感激,因为我不是那么熟悉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)) . "));";         
    }
}

Answer 1:

什么你要找的是Unicode代码点,即数字标识符是字符在Unicode字符表闻名。 该“最便宜的”的方式来做到这一点是通过UCS-2的字符编码,它映射1:从对Unicode码点字节1:

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

注意事项:返回的代码总是4个十六进制数字长(其可能或可能不喜欢)和UCS-2不支持比BMP更高,即,比代码点FFFF更高字符。



Answer 2:

没有什么神奇的关于PHP UTF-8。 当你阅读的文件,你会得到一个字节的值(而不是解析为字符)。 你读过的数据和使用迭代ORD()得到字节的十进制值。

如果你想使用UTF-8代码点要做到这一点,您可以使用mb_substr或iconv_substr使用ord()来打印构成字符每个字节的值之前提取每个字符。

更新:为完整的解决方案展开:

Utf8.Test: 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

希望帮助。



文章来源: UTF8 to equivalent number in php