PHP:如何将外来字符从simple_html_dom转换为UTF8?

时间:2011-07-31 02:04:52

标签: php utf-8 simple-html-dom

我在使用包含外来字符的网页中的字符串时遇到了一些麻烦。

通过使用str_get_html()解析网页,然后是$htmldom->innertext;(simple_html_dom类库)来生成字符串。

当我使用htmlentities()输出字符串时,显示正常;但是在字符串上使用explode()并打印部件时,我会得到一个带有问号的倾斜块,用于每个外来字符。

我需要将字符串存储在utf8 MySQL数据库中,所以我需要正确的外来字符。

我的页面有一个带utf8字符集的标题。

我已尝试过mb_split()preg_split(),但这些问题也存在同样的问题。

2 个答案:

答案 0 :(得分:2)

我解决了这个问题: https://github.com/neitanod/forceutf8

它有一个很棒的功能,只需将任何内容转换为utf-8,无论它来自哪个来源(只要它来自Latin1(iso 8859-1),Windows-1252或UTF8,或者它们的混合)。

非常感谢Sebastian Grignoli。

答案 1 :(得分:1)

PHP和UTF-8不是很好的组合。有些函数适用于UTF-8,有些函数没有,最差的是那些记录起来的函数,但实际上没有(例如DOMDocument)。

您可以使用mb_convert_encoding()将多字节字符转换为HTML实体,这通常会提供可接受的解决方法:

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