首页 > 解决方案 > 如何在 PHP 中将 UTF-8 字符串转换为 HEX 代码点?

问题描述

json_encode我通过as从 UTF-8 字符串中获取 HEX 代码点

substr(json_encode($str), 1, -1);

但是,json_encode不会转换 ASCII 范围内的字符。例如,

为了

sÆs

我明白了

s\u00C6s

但我想得到

\u0073\u00C6\u0073

标签: phpunicodeutf-8

解决方案


我将 json_encode 用于多字节字符并将其组装为 ASCII 字符。

function utf8toUnicode($str){
  $unicode = "";
  $len = mb_strlen($str);
  for($i=0;$i<$len;$i++){
    $utf8char = mb_substr($str,$i,1);
    $unicode .= strlen($utf8char)>1
      ?trim(json_encode($utf8char),'"')
      :('\\u00'.bin2hex($utf8char))
    ;
  }
  return $unicode;
} 

$str = 'sÆs'; 

echo utf8toUnicode($str);  // \u0073\u00c6\u0073

推荐阅读