是否有一个函数会将UTF-8更改为Unicode,而将非特殊字符视为普通字母和数字?UTF-8到Unicode代码点
即德语单词“tchüß”将呈现为类似“tch \ 20AC \ 21AC”(请注意,我正在制作Unicode代码)。
编辑:我用下面的函数试验,但尽管这一个ASCII码32到127的效果很好,它似乎失败双字节字符:
function strToHex ($string)
{
$hex = '';
for ($i = 0; $i < mb_strlen ($string, "utf-8"); $i++)
{
$id = ord (mb_substr ($string, $i, 1, "utf-8"));
$hex .= ($id <= 128) ? mb_substr ($string, $i, 1, "utf-8") : "&#" . $id . ";";
}
return ($hex);
}
任何想法?
编辑2:找到的解决方案:PHP的ord()函数不适用于双字节字符。改为使用:http://nl.php.net/manual/en/function.ord.php#78032
标题更改为更具描述 - UTF-8 ** **是Unicode的。您可能正在寻找“UTF-8到Unicode代码点”。 – Artyom
一个有用的资源:http://stackoverflow.com/questions/395832/how-to-get-code-point-number-for-a-given-character-in-a-utf-8-string – Karolis
你怎么样定义“非特殊字符”? – borrible