PHP echo/mysql不能正确处理特殊字符


PHP echo/mysql does not process special characters properly

我有一个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) . ",");

但结果是一样的

设置htmlspecialchars编码为UTF-8。

echo htmlspecialchars($value->name, ENT_QUOTES, 'UTF-8');