微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP简单HTML DOM解析器的字符编码问题

我正在使用PHP Simple HTML DOM Parser http://simplehtmldom.sourceforge.net/从其他域获取页面标题,元描述和元标记等数据,然后将其插入数据库.

我有一些编码问题.问题是我没有从那些不是英语的网站上得到正确的字符.

以下是代码

<?PHP
require 'init.PHP';

$curl = new curl();
$html = new simple_html_dom();

$page = $_GET['page'];

$curl_output = $curl->getPage($page);

$html->load($curl_output['content']);
$Meta_title = $html->find('title', 0)->innertext;

print $Meta_title . "<hr />";

// print $html->plaintext . "<hr />";
?>

facebook.compage的输出

欢迎使用Facebook – 登录,注册或了解更多信息

amazon.cnpage的输出

亚马-Š-罒上è’ç‰å•†åŸŽï¼šè|ç½’è’,å°±æ¥Z.cn!

mail.rupage的输出

Mail.Ru:почÑ,а,поиÑквинÑ,ÐμрнÐμÑ,Ðμ,новоÑÑ,и,игрÑ<,раÐÐÐÐÐÐÐÑÑ ‡ÐμÐ½Ð¸Ñ 因此,字符未被正确编码. 任何人都可以帮助我如何解决这个问题,以便我可以将正确的数据添加到我的数据库中.

解决方法:

@deceze和@Shakti感谢您的帮助.

 1作为deceze(Handling Unicode Front to Back in a Web App)发布的文章链接,也值得阅读Understanding encoding

在阅读你的评论,回答当然这两篇文章后,我终于解决了我的问题.

我列出了迄今为止我为解决此问题所采取的步骤:

>添加标题(‘Content-Type:text / html; charset = utf-8’);在我的init.PHP文件的顶部,
>更改了我的数据库表字段的CHaraCTER SET,它将这些值存储到UTF-8,
>将MysqL连接字符集设置为UTF-8 MysqL_set_charset(‘utf8’,$connection_link_id);
>使用htmlentities()函数转换字符$Meta_title = htmlentities(trim($Meta_title_raw),ENT_QUOTES,’UTF-8′);

在这个问题似乎已经解决了,但我仍然需要做以下事情来解决这个问题.

>从源$source_charset获取编码的字符集.
>如果字符串的编码已经不在同一编码中,请将其更改为UTF-8.为此,唯一可用的PHP函数是iconv().示例:iconv($source_charset,“UTF-8”,$Meta_title_raw);

为了获得$source_charset,我可能不得不使用一些技巧或多重检查.就像检查标题和元标记等一样,我在Detect encoding找到了一个很好的答案

如果我的步骤有任何改进或任何错误,请告诉我.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐