PHP字符编码问题™打印为¢

时间:2015-03-02 14:37:35

标签: php character-encoding

我从这样的网址抓取一些json数据: https://steamcommunity.com/id/itemdepot3/inventory/json/730/2

$json = json_decode(file_get_contents(
"https://steamcommunity.com/id/itemdepot3/inventory/json/730/2"),true);

然后我尝试打印每个项目的名称:

foreach($json["rgInventory"] as $item){
    $cid = $item["classid"];
    $iid = $item["instanceid"];
    $name = $json["rgDescriptions"]["{$cid}_{$iid}"]["market_name"];        
    echo $name;
}

但应该包含a™的名字出现了这样的错误:

StatTrakâ„¢ Five-SeveN | Nightshade (Field-Tested)

我尝试过一堆愚蠢的正则表达式修复程序(因为这是我需要修复的唯一字符),但无济于事。我不知道我在这里处理什么样的编码,所有的搜索都干了。如何才能正确打印我的™符号?

1 个答案:

答案 0 :(得分:2)

如上面的评论所述,您需要确保指定正确的输出编码。

问题源于你输出UTF-8字符的事实,但是你的网络浏览器试图将页面解码为单字节字符集(很可能是ISO-8859-1或Windows-1252)。

确保始终通过适当使用HTTP标头(在本例中为Content-Type: text/html; charset=utf-8)或使用<meta>标记来指定输出编码。