2015-03-02 94 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>標籤來指定輸出編碼。