2012-05-12 196 views
1

我已經嘗試了很多不同的東西,無法獲得顯示的歐元符號。 我正在使用cURL來解析頁面。該頁面在ISO-8859-1歐元符號編碼 - PHP

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 

有頁面上的歐元符號,當我使用

$curl_scraped_page = curl_exec($ch); 

我只看到一個黑色菱形裏面問號編碼。

我在這個網站上看到很多問題和答案,但它們並沒有真正起作用。

編輯:我試圖使用以下命令:

$curl_scraped_page = preg_replace('/charset=(.*)"/', 'charset="UTF-8"', $curl_scraped_page); 

$curl_scraped_page = iconv('iso-8859-1', 'UTF-8', $curl_scraped_page); 

$curl_scraped_page = utf8_encode(curl_exec($ch)); 

我想另一個問題是,顯示歐元簽名,我需要使用UTF-8還是ISO-8859-1?

EDIT2:我已經試過這樣:

echo "Encoding is $enc"; 
echo iconv($enc, "ISO-8859-1", $curl_scraped_page); 

結果是:

Encoding is ISO-8859-1 

但仍有沒有歐元符號。 當我查看頁面的源代碼時,它仍然顯示鑽石問號,但是當我在瀏覽器上單擊「查看」並將其更改爲ISO-8859-1時,會出現歐元符號。那麼這是一個瀏覽器問題?

+0

除非你告訴我們你已經嘗試過,什麼是不工作,這將是很難幫助:)作爲一般性評論,有你嘗試使用PHP的'utf8_encode'函數? http://php.net/manual/en/function.utf8-encode.php – Daan

+0

好吧,它現在正在工作!我實際上找不到給我建議的人,因爲我認爲他們刪除了這個帖子,但是如果你看到這個,謝謝你!我設置cURL來解析ISO-8859-1編碼,然後再進行cURL解析:** header('Content-Type:text/html; charset = iso-8859-1'); ** – Jay

回答

0

我設置捲曲在ISO-8859-1編碼解析,之前,我做了Curl解析

header('Content-Type: text/html; charset=iso-8859-1'); 
$curl_scraped_page = curl_exec($ch); 

這意味着它需要的歐元符號,因爲它是在頁面上。 然後,當我用歐元符號回顯內容時,我不必擔心編碼,因爲我認爲它會自動格式化爲我正在使用的任何編碼。

0

只需將相同的元內容類型聲明添加到您正在回顯檢索到的頁面的網頁上即可。

+0

我試過了:$ text = iconv($$ curl_scraped_pa​​ge,「ISO-8859-1」,$ text); echo $ text; - 但它沒有奏效。 – Jay

+0

不,我的意思是添加這一行:'' – Jeroen

1

嘗試設置標頭捲曲

$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 

它可能是捲曲作出默認情況下,「UTF-8」連接。

編輯:

是什麼,當你將其轉換爲ISO與 「utf8_decode」?

PHP: curl_setopt

+0

我試過這個,它沒有工作。 我認爲你的變量$ curl應該是我的$ ch。 – Jay

+0

你應該給更多有關的信息。您以UTF-8回報,這就是您看到問號標誌的原因。所以你必須將你的回報轉換回ISO。 – Stony

0

Web瀏覽器不使用meta標記來確定的字符集,除非當前沒有出現HTTP頭它聲明的字符集。這是後備,大多數web服務器通過http頭指定charset,因此meta標籤在實踐中通常被忽略。

我在說:那個頁面可能是一個不同的字符集。

檢查http頭。然後聲明你自己的頁面再次通過http標題匹配,而不是meta標籤。或者將字符串轉換爲您的首選編碼。

1

只是採用htmlentities(curl_exec($ch)) 這在特殊字符不會打破