我在使用包含外来字符的网页中的字符串时遇到了一些麻烦。
通过使用str_get_html()
解析网页,然后是$htmldom->innertext;
(simple_html_dom类库)来生成字符串。
当我使用htmlentities()
输出字符串时,显示正常;但是在字符串上使用explode()
并打印部件时,我会得到一个带有问号的倾斜块,用于每个外来字符。
我需要将字符串存储在utf8
MySQL数据库中,所以我需要正确的外来字符。
我的页面有一个带utf8
字符集的标题。
我已尝试过mb_split()
和preg_split()
,但这些问题也存在同样的问题。
答案 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');