2011-07-31 53 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

相关问题