我有一个JSON文件,可以从第三方网站远程访问。它包含具有特殊字符的字符串,例如:
"name":"StatTrak\u2122 FAMAS | Pulse",
和"name":"\u2605 Butterfly Knife | Case Hardened",
但是,当我使用以下PHP代码回显这些值时:
$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) . ",");
但结果是一样的。
答案 0 :(得分:0)
将htmlspecialchars
编码设置为UTF-8。
echo htmlspecialchars($value->name, ENT_QUOTES, 'UTF-8');