1

我在处理来自包含外来字符的网页的字符串时遇到了一些问题。

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

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

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

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

我已经尝试过mb_split()and preg_split(),但是那些有同样的问题。

4

2 回答 2

2

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

它有一个很棒的功能,可以将任何东西转换为 utf-8,无论它来自什么来源(只要它已经来自 Latin1(iso 8859-1)、Windows-1252 或 UTF8,或者它们的混合)。

非常感谢 Sebastian Grignoli。

于 2011-07-31T02:50:22.097 回答
1

PHP 和 UTF-8 不是一个很好的组合。一些函数在 UTF-8 下可以正常工作,而其他函数则不能,最糟糕的是那些被记录为可以工作但实际上不能工作的函数(例如 DOMDocument )。

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

$string = mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-8');
于 2011-07-31T02:11:08.637 回答