utf8_encode 不是 encoding/converting 字符
utf8_encode not encoding/converting character
我正在尝试使用 utf8_encode 来显示一些重音字符(目的是将它们放入 json),但由于某种原因它似乎失败了而且我不明白为什么。这是我通过 php 测试人员 运行 得到的测试数据:
$data = '{"14446":"discreci\u00f3n","14450":"prudencia","14461":"experiencia","14491":"vida"}';
$data = preg_replace('|u00([A-Fa-f0-9][A-Fa-f0-9])|', 'x{}', $data);
echo $data;
echo "\r\n\r\n";
$data = preg_replace('/"\d*":/','',$data);
echo $data;
echo "\r\n\r\n";
$data = preg_replace('/[{}"?!]/','',$data);
echo $data;
echo "\r\n\r\n";
$data_array = explode(",", $data);
foreach ($data_array as $data) {
echo $data;
echo "\r\n\r\n";
}
echo utf8_encode($data_array[0]);
echo "\r\n\r\n";
echo utf8_encode("discreci\xf3n");
哪个输出:
{"14446":"discreci\x{f3}n","14450":"prudencia","14461":"experiencia","14491":"vida"}
{"discreci\x{f3}n","prudencia","experiencia","vida"}
discreci\xf3n,prudencia,experiencia,vida
discreci\xf3n
prudencia
experiencia
vida
discreci\xf3n
discreción
如您所见,如果我直接输入它,它会转换它,但如果它作为变量接收它,它不会转换它,即使它被引号括起来也是如此 eg.:
foreach ($data_array as $data) {
$data = '"' . $data . '"';
echo $data;
echo "\r\n\r\n";
}
也不转换它。
所以 - 我做错了什么?
你创建了一个包含 \xf3
的字符串,这些都是 ASCII 字符。
如果你想要 ó
你可以使用 stripcslashes 来激活嵌入的 \
echo utf8_encode(stripcslashes($data_array[0]));
但另一方面
foreach( json_decode($data,1) as $v ) echo $v ,"\n\n" ;
在原始 $data
(preg_replace 之前)上工作得很好,并且支持所有 Unicode 而不仅仅是一个子集。
我正在尝试使用 utf8_encode 来显示一些重音字符(目的是将它们放入 json),但由于某种原因它似乎失败了而且我不明白为什么。这是我通过 php 测试人员 运行 得到的测试数据:
$data = '{"14446":"discreci\u00f3n","14450":"prudencia","14461":"experiencia","14491":"vida"}';
$data = preg_replace('|u00([A-Fa-f0-9][A-Fa-f0-9])|', 'x{}', $data);
echo $data;
echo "\r\n\r\n";
$data = preg_replace('/"\d*":/','',$data);
echo $data;
echo "\r\n\r\n";
$data = preg_replace('/[{}"?!]/','',$data);
echo $data;
echo "\r\n\r\n";
$data_array = explode(",", $data);
foreach ($data_array as $data) {
echo $data;
echo "\r\n\r\n";
}
echo utf8_encode($data_array[0]);
echo "\r\n\r\n";
echo utf8_encode("discreci\xf3n");
哪个输出:
{"14446":"discreci\x{f3}n","14450":"prudencia","14461":"experiencia","14491":"vida"}
{"discreci\x{f3}n","prudencia","experiencia","vida"}
discreci\xf3n,prudencia,experiencia,vida
discreci\xf3n
prudencia
experiencia
vida
discreci\xf3n
discreción
如您所见,如果我直接输入它,它会转换它,但如果它作为变量接收它,它不会转换它,即使它被引号括起来也是如此 eg.:
foreach ($data_array as $data) {
$data = '"' . $data . '"';
echo $data;
echo "\r\n\r\n";
}
也不转换它。
所以 - 我做错了什么?
你创建了一个包含 \xf3
的字符串,这些都是 ASCII 字符。
如果你想要 ó
你可以使用 stripcslashes 来激活嵌入的 \
echo utf8_encode(stripcslashes($data_array[0]));
但另一方面
foreach( json_decode($data,1) as $v ) echo $v ,"\n\n" ;
在原始 $data
(preg_replace 之前)上工作得很好,并且支持所有 Unicode 而不仅仅是一个子集。