2013-03-06 74 views
0

我有一個CURL腳本,它從正常的JSON提要中提取數據。 Feed返回的html代碼,但特殊的html字符被錯誤地格式化。PHP:錯誤地格式化爲字符串的HTML特殊字符(UTF8)

例如,我得到以下字符串:

â~......美麗的新的圖形 â~......華麗的新型有機環境 â~......新的障礙

的數據存儲到數據庫中,我還想存儲特殊的html字符。

如何保留特殊的html字符。我的腳本如下:

$curl_session = curl_init(); 

curl_setopt($curl_session, CURLOPT_URL,'https://itunes.apple.com/lookup?id=572395608'); 
curl_setopt($curl_session, CURLOPT_CONNECTTIMEOUT,10); 
curl_setopt($curl_session, CURLOPT_TIMEOUT, 10);     
curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl_session, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl_session, CURLOPT_SSL_VERIFYPEER, 0); 
$source = curl_exec($curl_session); 

$source_decoded = json_decode($source, true); 

print_r($source_decoded); 
exit; 
+0

'mb_detect_encoding($ source));'return? – mkaatman 2013-03-06 20:14:18

+0

@mkaatman:它返回:UTF-8。使用utf8_decode(),我將它作爲輸出:?美麗的新圖形?華麗的新有機環境?新的障礙 – 2013-03-06 20:15:54

+0

怎麼樣:'echo htmlspecialchars($ source,ENT_QUOTES,'UTF-8');' – mkaatman 2013-03-06 20:18:31

回答

1

您正在接收字符爲UTF-8,因爲這是JSON中唯一允許且可能的編碼。

但你輸出它們不是UTF-8。改變這一點。發送一個內容類型標題,告訴客戶端哪個編碼已被使用。或者將字符轉換爲您正在使用的編碼,並且可能會丟失那些無法編碼的字符。

+0

總之,使用:header('Content-Type:text/html; charset = utf-8'); – 2013-03-06 21:04:46