gpt4 book ai didi

php - 您将如何创建所有 UTF-8 字符的字符串?

转载 作者:可可西里 更新时间:2023-11-01 13:44:14 26 4
gpt4 key购买 nike

表示+100万的方式有很多种UTF-8 characters .以带有长音符 (Ā) 的拉丁文大写字母“A”为例。这是 unicode 代码点 U+0100、十六进制数 0xc4 0x80、十进制数 196 128 和二进制数 11000100 10000000.

我想创建一个包含前 65,535 个 UTF-8 字符的集合,用于测试应用程序。这些都是代码点 U+FFFF (byte3) 之前的所有 unicode 字符。

是否可以执行类似 for($x=0) 循环的操作,然后将生成的十进制转换为另一个基数(如十六进制),从而允许创建匹配的 unicode 字符?

我可以使用这样的方法创建值 Ā:

$char = "\xc4\x80";
// or
$char = chr(196).chr(128);

但是,我不确定如何将其变成自动化流程。

// fail!
$char = "\x". dechex($a). "\x". dexhex($b);

最佳答案

您可以利用 iconv(或其他一些函数)将代码点数字转换为 UTF-8 字符串:

function unichr($i)
{
return iconv('UCS-4LE', 'UTF-8', pack('V', $i));
}

$codeunits = array();
for ($i = 0; $i<0xD800; $i++)
$codeunits[] = unichr($i);
for ($i = 0xE000; $i<0xFFFF; $i++)
$codeunits[] = unichr($i);
$all = implode($codeunits);

(我避免了替代范围 0xD800–0xDFFF,因为它们本身不能有效地放入 UTF-8;那将是“CESU-8”。)

关于php - 您将如何创建所有 UTF-8 字符的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2748956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com