是否有一個函數會將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