我有一个JSON文件,从第三方网站远程访问。它包含带有特殊字符的字符串,例如:
"name":"StatTrak'u2122 FAMAS | Pulse",
和"name":"'u2605 Butterfly Knife | Case Hardened",
$url = "https://www.example.com";
$json = file_get_contents($url);
$obj = json_decode($json);
$descriptions = $obj->rgDescriptions;
foreach ($descriptions as $key => $value) {
echo htmlspecialchars($value->name);
echo htmlspecialchars($value->name, ENT_QUOTES, 'UTF-8');
}
将这些行打印为:
StatTrakâ„¢ FAMAS | Pulse
和★ Butterfly Knife | Case Hardened
如何预防?在MySQL表中存储这些值时也会发生这种情况。
我还尝试了以下操作:
$enc = mb_detect_encoding($value->name, "UTF-8,ISO-8859-1");
echo (iconv($enc, "UTF-8", $value->name) . ",");
但结果是一样的
设置htmlspecialchars
编码为UTF-8。
echo htmlspecialchars($value->name, ENT_QUOTES, 'UTF-8');