2011-12-18 136 views
2

我想從網站中提取中文單詞。中文字符 - PHP編碼

我使用簡單的捲曲代碼:

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($curl); 

echo $response; 

單詞的一個預期結果是

網絡頻率 

但是我得到這個:

ÍøÂçƵÂÊ 

另外,如果我的URL編碼字結果是不同的。

我最近遇到編碼問題。 中文字符是UTF8還是什麼? 任何人都可以幫助我的字符將顯示「正常」與回聲,如果我網址編碼他們的結果將相同,如果我把它們從網站複製。

乾杯

回答

4

中文通常是UTF-8,是的。您遇到的問題可能不是數據沒有正確接收(cURL知道它在做什麼),但是您沒有正確地將它們發送到瀏覽器。

試試這個在您的網頁的頂部:

header('Content-Type: text/html; charset=utf-8'); 

這會告訴您正在發送UTF-8信息的瀏覽器。

更新:如果這不起作用,可能是PHP本身沒有正確處理它們。嘗試在您的echo中使用utf8_encodeutf8_decode。如果該功能不起作用,那麼cURL不會正確解碼流,這意味着您必須在響應中查找Content-Type標頭,並相應地解碼流。

+1

嘿湯姆我也嘗試過,但它更糟糕。我只是有奇怪的問號:/ – user1102979 2011-12-18 00:29:25

+0

更新我的答案與兩個額外的想法。 – 2011-12-18 00:31:37

+0

嗨@Tom Content-type部分非常有幫助。 我想通了他們使用gb2312 encoding.Echo現在工作良好。 PHP的默認章程編碼是utf8對不對? 所以現在我正在尋找一種方法將它從gb2312轉換爲utf8吧? – user1102979 2011-12-18 00:38:54

2

試試這個,

1)創建一個新的文件,並確保該文件是UTF-8兼容

2)使用金屬標籤:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

3)我不會建議使用utf-8強制標題,但只需使用ini_set

ini_set('default_charset', 'UTF-8'); 

如果您正在調用curl功能從一個不同的頁面,確保頁面能夠攜帶UTF-8字符並將其傳遞到UTF-8兼容頁面。

+0

ini_set('default_charset','UTF-8');是從服務器端修復的好方法。 – Shiro 2016-12-03 05:49:58