我想转换一个字符串,如:
alnassre
will be 0061006c006e00610073007300720065
عربي
will be 063906310628064a
a
will be 0061
使用 PHP
正如链接中的内容http://www.bareedsms.com/tools/UniCodeConverter.aspx
我想转换一个字符串,如:
alnassre
will be 0061006c006e00610073007300720065
عربي
will be 063906310628064a
a
will be 0061
使用 PHP
正如链接中的内容http://www.bareedsms.com/tools/UniCodeConverter.aspx
我知道您已经找到了适合您的答案,但这应该是:
快多了
更容易适应其他字符编码。
它确实依赖于iconv
,但所有现代 PHP 安装都有它,对吧?
function utf8_to_unicode_codepoints($text) {
return ''.implode(unpack('H*', iconv("UTF-8", "UCS-4BE", $text)));
}
我找到了答案,但它在这里返回数组
我编辑函数以返回字符串。
function utf8_to_unicode($str) {
$unicode = array();
$values = array();
$lookingFor = 1;
for ($i = 0; $i < strlen($str); $i++) {
$thisValue = ord($str[$i]);
if ($thisValue < 128)
$unicode[] = str_pad(dechex($thisValue), 4, "0", STR_PAD_LEFT);
else {
if (count($values) == 0) $lookingFor = ($thisValue < 224) ? 2 : 3;
$values[] = $thisValue;
if (count($values) == $lookingFor) {
$number = ($lookingFor == 3) ?
(($values[0] % 16) * 4096) + (($values[1] % 64) * 64) + ($values[2] % 64):
(($values[0] % 32) * 64) + ($values[1] % 64);
$number = strtoupper(dechex($number));
$unicode[] = str_pad($number, 4, "0", STR_PAD_LEFT);
$values = array();
$lookingFor = 1;
} // if
} // if
} // for
$str="";
foreach ($unicode as $key => $value) {
$str .= $value;
}
return ($str);
} // utf8_to_unicode