PHP 将字符串视为字符数组,而不考虑编码。如果您不需要分隔 UTF8 字符,则可以使用以下方法:
$str='ụưứỲỶỴĐ';
foreach(str_split($str) as $char)
echo '\x'.str_pad(dechex(ord($char)),'0',2,STR_PAD_LEFT);
输出:
\xe1\xbb\xa5\xc6\xb0\xe1\xbb\xa9\xe1\xbb\xb2\xe1\xbb\xb6\xe1\xbb\xb4\xc4\x90
如果您需要分隔 UTF8 字符(即使用换行符),那么您需要这样的内容:
$str='ụưứỲỶỴĐ';
foreach(array_slice(preg_split('~~u',$str),1,-1) as $UTF8char){ // split before/after every UTF8 character and remove first/last empty string
foreach(str_split($UTF8char) as $char)
echo '\x'.str_pad(dechex(ord($char)),'0',2,STR_PAD_LEFT);
echo "\n"; // delimiter
}
输出:
\xe1\xbb\xa5
\xc6\xb0
\xe1\xbb\xa9
\xe1\xbb\xb2
\xe1\xbb\xb6
\xe1\xbb\xb4
\xc4\x90
preg_split
这使用和u
标志将字符串拆分为 UTF8 字符。由于preg_split
返回第一个字符之前的空字符串和最后一个字符之后的空字符串,所以我们需要array_slice
第一个和最后一个字符。例如,这可以很容易地修改为返回一个数组。
编辑:
一个更“正确”的方法是这样的:
echo trim(json_encode(utf8_encode('ụưứỲỶỴĐ')),'"');