2010-02-11 116 views
2

好吧,我放棄了。 我一直在搞亂所有我能想到的從具有傳統中文編碼信息(charset = GB2312)的目標網站檢索數據。用漢字獲取源代碼PHP

我一直都在使用simple_html_parser,但它似乎並沒有返回中文字符,實際上我所得到的都是一些奇怪的問號嵌入菱形形狀。 (「 ѯ ؼ ֣ 」像這樣)

聲明的PHP文件的編碼沒有做任何事情,除了擺脫一些不需要的字符顯示在開始這一頁。

通過聲明爲我的意思是:

header('Content-Type', 'text/html; charset=GB2312'); 

我不能讓形式,它在中國的任何數據,也試過file_get_contents用相同的運氣。我可能錯過了一些明顯的事情,因爲我在別處找不到任何相關的討論。

在此先感謝。

回答

4

您是否嘗試過使用mb_convert_encodingiconv(例如,

$str = mb_convert_encoding($content, 'UTF-8', 'GB2312'); 

$str = iconv("UTF-8", "GB2312//IGNORE", $content); 
+1

這就是爲什麼我喜歡堆棧溢出,我會一直最終放棄努力,並忘掉它,但這個網站,真是不可思議。 你的第一個例子很好,沒有嘗試第二個例子,你能指出它的區別嗎? 謝謝 – johnnyArt 2010-02-11 23:40:38

+0

@johnnyArt很好,他們基本上都是這樣做的,但'iconv'函數更具可配置性,並支持比'mb_ *'(afaik)更多的編碼。至於這兩個軟件包之間的差異,我真的沒什麼可提供的:'iconv'需要首先啓用,我認爲讀取速度稍慢,而'mb_ *'是默認捆綁的。我會說這就像GD和ImageMagick。他們只是兩個可用的軟件包。但實際上,你可能想問一個新問題的區別。 – Gordon 2010-02-12 08:15:11

1

獲取源代碼使用的任何字符集,然後將其轉換爲本地可用的內容,例如UTF-8。 然後發送給瀏覽器。

-1

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

它的工作對我來說