2015-03-02 97 views
-1

我从URL抓取一些JSON数据像这样的: https://steamcommunity.com/id/itemdepot3/inventory/json/730/2PHP字符编码问题™打印为“¢

$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; 
} 

但其中应包括™名字出来错位是这样的:

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

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

+0

确保您的网页指定它正在输出UTF-8。 – Phylogenesis 2015-03-02 14:41:29

+0

@Phylogenesis我不能改变任何关于源页面,我只是从它的数据。 – Abovestand 2015-03-02 14:54:53

+0

我在说你的输出。我怀疑你正在输出UTF-8,但浏览器认为它正在读取ISO-8859-1或其他一些内容。确保你设置了适当的Content-Type头(无论是在HTTP响应中,还是通过meta标签)。 – Phylogenesis 2015-03-02 15:04:24

回答

2

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

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

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