首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >DOMDocument和UTF8。MySQL显示:字符串值不正确

DOMDocument和UTF8。MySQL显示:字符串值不正确
EN

Stack Overflow用户
提问于 2018-07-03 01:38:51
回答 1查看 255关注 0票数 0

我正在尝试通过下面的脚本加载this website的元描述(它有一个德语字符):

$page_content = file_get_contents($uri);
$dom_obj = new \DOMDocument();
$dom_obj->loadHTML(mb_convert_encoding($page_content, 'HTML-ENTITIES', 'UTF-8'));

然而,当尝试将其写入MySQL数据库时,Laravel说它在尝试将其写入数据库时遇到了问题:不正确的字符串值"\xC3“(这是德语字符)

当我简单地执行以下操作时,向db写入数据就可以了。但字符显示不正确(?而不是ü)

$dom_obj->loadHTML($page_content)

到目前为止,这个问题只出现在这个网站上,我用同样的角色尝试过的其他网站都可以工作。你能想出一个可能的原因并解决吗?谢谢!

编辑:

当我使用PHPs "utf8_decode“来解码我在没有mb_convert_encoding的情况下通过$dom_obj获得的元描述时,它工作得很好。当我这样做时,以前工作的所有其他网站都会导致错误(如:不正确的字符串值:'\xE4t')

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 04:06:26

我发现了错误。我使用substr来缩短描述。显然,substr删除了其中一个特殊字符,这就是它不起作用的原因。

foreach($dom_obj->getElementsByTagName('meta') as $meta) {
  if($meta->getAttribute('name')=='description'){
    substr($meta->getAttribute('content'), 0, 156);

这是一种解决方法:

mb_substr($foo,0,156,"UTF-8");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51141207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档