PHP将Unicode转换为Hex,反之亦然

时间:2014-08-05 20:32:35

标签: php unicode

我正在尝试将unicode(泰米尔语)转换为十六进制值并将相同的十六进制值转换回Unicode(泰米尔语)

以下是我用来将Unicode转换为十六进制的代码

<?php
$data = 'தமிழ்';

//Convert Tamil text to hexa decimal codes
$mb_hex = '';
for($i = 0 ; $i<mb_strlen($data,'UTF-8') ; $i++){
    $c = mb_substr($data,$i,1,'UTF-8');
    $o = unpack('N',mb_convert_encoding($c,'UCS-4BE','UTF-8'));
    $mb_hex .= sprintf('%04X',$o[1]);
}
echo "Hex Chars = ".$mb_hex;
?>

如何将十六进制值转换回泰米尔语?

1 个答案:

答案 0 :(得分:1)

您可以使用函数html_entity_decode,其中编码设置为HTML unicode格式,其格式为&#2980(2980是0BA4(十六进制格式)的十进制等效值)

html_entity_decode(preg_replace("/([0-9A-F]{4})/", "&#x\\1;", $mb_hex), ENT_NOQUOTES, 'UTF-8');

由于您在代码4的{​​{1}}中使用了X数字和大写%04X%字母,因此这里的数字为sprintf和大写字母4中使用了A-F