2011-07-31 81 views
1

我遇到了一個來自外部字符的網頁的字符串的麻煩。PHP:如何將外來字符從simple_html_dom轉換爲UTF8?

該字符串是通過使用str_get_html()解析網頁,然後是$htmldom->innertext;(simple_html_dom類庫)生成的。

當我使用htmlentities()輸出字符串時,它顯示正常;但在字符串上使用explode()並打印零件,我得到一個帶有問號的傾斜塊,用於每個外來字符。

我需要將字符串存儲在一個utf8 MySQL數據庫中,所以我需要正確的外來字符。

我的頁面有一個標題utf8字符集。

我已經試過mb_split()preg_split(),但這些都有同樣的問題。

回答

2

我解決了這個問題,有:

它有一個很大的功能,只是轉換什麼都是utf-8,無論它來自何處(只要它是Latin1(iso 8859-1),Windows-1252或UTF8,或者它們的組合)。

非常感謝塞巴斯蒂安格里尼奧利。

+0

如果這解決了你的問題,你應該接受這個答案。 :) –

1

PHP和UTF-8不是很好的組合。一些函數可以在UTF-8上正常工作,其他函數則不會,最糟糕的是那些被記錄爲可用的函數,但事實上並非如此(如DOMDocument)。

您可以使用mb_convert_encoding()爲多字節字符轉換爲HTML實體,它通常提供一個可接受的解決方法:

$string = mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-8'); 
+0

太糟糕了,它不工作...也嘗試過utf8_encode()... – Dylan

+0

''utf8_encode()''將iso-8859-1字符串轉換爲utf-8,所以如果你的源代碼是沒有意義的已經utf-8 ...也許源文件不是UTF-8? – Carpetsmoker

+0

我不知道...它來自於一個現有的網頁,我用simple_html_dom處理,我如何檢測網頁的編碼? (相同的例程可以很好地適用於具有不同源網頁的外來字符!) – Dylan

相關問題