这几天有在用simple_html_dom抓一些文章。不同网站的编码在国内基本上是gbk gb2312 utf-8。而以gb2312和utf-8居多。

我这一版的simple_html_dom有一个方法 convert_text 是这个样子的。

复制代码 代码如下:

// PaperG - Function to convert the text from one character set to another if the two sets are not the same.

function convert_text($text)

{

global $debug_object;

if (is_object($debug_object)) {$debug_object->debug_log_entry(1);}

$converted_text = $text;

$sourceCharset = "";

$targetCharset = "";

if ($this->dom)

{

$sourceCharset = strtoupper($this->dom->_charset);

$targetCharset = strtoupper($this->dom->_target_charset);

}

if (is_object($debug_object)) {$debug_object->debug_log(3, "source charset: " . $sourceCharset . " target charaset: " . $targetCharset);}

if (!empty($sourceCharset) && !empty($targetCharset) && (strcasecmp($sourceCharset, $targetCharset) != 0))

{

// Check if the reported encoding could have been incorrect and the text is actually already UTF-8

if ((strcasecmp($targetCharset, 'UTF-8') == 0) && ($this->is_utf8($text)))

{

$converted_text = $text;

}

else

{

$converted_text = iconv($sourceCharset, $targetCharset, $text);

}

}

// Lets make sure that we don't have that silly BOM issue with any of the utf-8 text we output.

if ($targetCharset == 'UTF-8')

{

if (substr($converted_text, 0, 3) == "/xef/xbb/xbf")

{

$converted_text = substr($converted_text, 3);

}

if (substr($converted_text, -3) == "/xef/xbb/xbf")

{

$converted_text = substr($converted_text, 0, -3);

}

}

return $converted_text;

}

来看这一行:

复制代码 代码如下:

$converted_text = iconv($sourceCharset, $targetCharset, $text);

会引起转码不正确。比如会把gb2312的文字转成:

复制代码 代码如下:

4月26日在

php html转dom,PHP解析html类库simple_html_dom的转码bug相关推荐

  1. php解析html类库simple_html_dom

    本文介绍simple_html_dom,就是用来处理网页,可以写爬虫抓取信息: 背景:在项目中获得一个很长的html标签的长字符串,需要解析到里面所有的标签的的src地址: 用正则匹配来做比较麻烦,在 ...

  2. 页面加载完毕_【前端面试】dom 的解析,加载,渲染

    本文会把 dom 的解析,加载,渲染结合 window.performance 一起讲. dom 的解析 解析:HTMl 解析器把 HTML 构建成 HTML 树形数据结构,也就是 DOM 树. 注意 ...

  3. python 之模块之 xml.dom.minidom解析xml

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...

  4. JavaXml教程(二)使用DOM方式解析XML文件

    DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...

  5. [css] css的加载会阻塞DOM树解析和渲染吗?为什么

    [css] css的加载会阻塞DOM树解析和渲染吗?为什么 css的加载不会阻止DOM树的解析 css的加载会阻止DOM树的渲染,因为css的下载完成后解析成CSSOM与DOM生成渲染树后,页面才会渲 ...

  6. 粤嵌学习打卡第19天(基于DOM方式解析、生成XML文档)

    今天我们来聊聊基于DOM方式实现解析和生成XML文档 一般web开发的xnl文档: 基于DOM处理XML文档 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SIQAET ...

  7. 舒工深度解析不规则场地座位二维码生成规则

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  8. 【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9153761 记得在前面的文章中,我带大家一起从源码的角度分析了Android中Vi ...

  9. [学习总结]7、Android AsyncTask完全解析,带你从源码的角度彻底理解

    我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制.之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴 ...

最新文章

  1. CentOS 7.3 源码安装 OpenVAS 9
  2. Python按行读取文件、写文件
  3. install ros indigo tf2
  4. Spring boot 和Vue开发中CORS跨域问题
  5. 指定字符串按指定长度进行剪切
  6. 计算机改成服务器,旧电脑主机如何改成服务器
  7. mysql分列查询,Mysql导出问题,乱码问题,为分列问题解决!!!
  8. android gridview行分割线,Android中控件GridView实现设置行列分割线的方法示例
  9. 设计模式(二)构建型模式
  10. 二叉树反转java实现
  11. JAVA命令行运行时设置参数
  12. 【图像隐写】基于matlab LBP数字水印嵌入攻击提取【含Matlab源码 1672期】
  13. AndroidStudio 抓包工具Profiler使用
  14. 基于微信功能社群助手
  15. 3D视觉从入门到精通知识星球
  16. IDEA找不到应用程序(localhost:8080)
  17. 雾里看菊:热点IP是怎么生成的
  18. DP4344音频转换芯片ACD/DAC完全兼容CS4344音频解码
  19. java旧版下载地址_Java下载 - 最新版、历史版本的官方下载地址
  20. 国家普通话水平测试官方手机软件,普通话测试软件 – 免费手机普通话测试软件,用手机模拟测试普通话水平[Android]...

热门文章

  1. 面向对象八大设计原则
  2. android init.rc语法标准 .
  3. 中国移动手机网络私有网络连接问题解决办法
  4. deepin终端配置为英文
  5. 2.MATLAB安装
  6. Redis适用于高并发的递增、递减功能
  7. Android JNI开发摘录(四)之JNI异常处理
  8. 一个人最重要的是跌倒了爬起来的能力
  9. Microsoft 和 Google 就Yahoo 收购一事展开口水战
  10. PAT甲级1151 LCA in a Binary Tree (30 分):[C++题解]LCA、最低公共祖先、哈希表映射