做爬虫抓取页面的时候,常常有非utf-8的混入,包括gbk gb2312 甚至是 Big5,需要转换成我们期望的格式。

同时,Windows与其他操作系统也不同。普通的Linux和Mac都是原生使用utf-8的编码格式,而中文的windows用的则是gbk格式。因此针对不同系统的终端输出(console,cmd),我们也需要进行编码转换。

看代码说话:

function exchangeEncoding($text, $pageEncoding = '', $targetEncoding = 'UTF-8')

{

if (!$pageEncoding) {

$pageEncoding = mb_detect_encoding($text, array("ASCII", 'UTF-8', "GB2312", "GBK", 'BIG5'));

}

if ($pageEncoding != $targetEncoding) {

return mb_convert_encoding($text,$targetEncoding,$pageEncoding);

}

return $text;

}

function consoleText($text, $pageEncoding = '', $consoleEncoding = '')

{

// windows

if (!$consoleEncoding) {

if (stristr(php_uname('s'), 'win')) {

$consoleEncoding = "GBK";

} else {

$consoleEncoding = 'UTF-8';

}

}

return exchangeEncoding($text, $pageEncoding, $consoleEncoding);

}

使用 php_uname() 判断操作系统类型

/**

* 'a': 返回所有信息

* 's': 操作系统的名称,如FreeBSD

* 'n': 主机的名称,如cnscn.org

* 'r': 版本名,如5.1.2-RELEASE

* 'v': 操作系统的版本号

* 'm': 核心类型,如i386

*/

function php_uname ($mode = null) {}

运行 php_uname(), 在我本机 Windows 中,返回类似如下的数据

Windows NT KELU-PC 10.0 build 10586 (Windows 10) AMD64

在 Linux 服务器中则如下

Linux debian 4.8.6-x86_64 #1 SMP Tue Nov 1 14:51:21 EDT 2016 x86_64

使用 mb_detect_encoding 判断字符编码

function mb_detect_encoding ($str, $encoding_list = null, $strict = null) {}

使用 mb_convert_encoding 转换字符编码

function mb_convert_encoding ($str, $to_encoding, $from_encoding = null) {}

参考资料

php获取数据编码,php 获取编码和转换编码相关推荐

  1. python实现批量转换文件编码(批转换编码示例)

    这篇文章主要介绍了python实现批量转换文件编码示例,指定文件编码.目录或扩展名即可进行转换,大家参考使用吧 # -*- coding:utf-8 -*- __author__ = 'walksky ...

  2. linux字符串编码转换函数,Linux C++ 字符串 编码识别、编码转换

    最近在做一个类似垂直下载的爬虫系统.下载之后有个解析模块,解析之后要求编码一致的向后传入索引,便遇到了编码转换问题. 1. 编码的识别 推荐使用 libchardet, 可以在这个页面下载,使用说明就 ...

  3. 【Linux】文件的编码语系转换与换行符转换

    1.编码语系转换 编码是信息从一种形式转换成另一种形式的过程,有一定的编码格式.规则,那么在解码时,如果格式有误,就会出现常见的乱码现象.常见的中文编码语系有gb2312.big5.gbk.utf8等 ...

  4. 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )

    文章目录 一. 头文件.成员变量准备 二. 创建 FAAC 编码器 三. 获取并设置 FAAC 编码器参数 四. 设置 FAAC 编码器编码标准 五. 设置 FAAC 编码器 AAC 编码规格 六. ...

  5. mp4视频获取时长、封面图、编码、转码(mpeg4转h264)工具类

    application.properties server.port=8908 file.uploadfolder=D:/school/ #分片文件临时目录 file.chunkfolder=D:/s ...

  6. C语言标准库里的获取时间函数及时间格式转换详解

    C语言标准库里的获取时间函数及时间格式转换详解 头文件: #include <time.h> 相关库函数(截图摘自:https://www.runoob.com/cprogramming/ ...

  7. BankCardUtils(根据银行卡号 获取 银行卡类型、银行名称和银行编码 自动格式化银行卡号、手机号、身份证号输入的工具类)

    BankCardUtils 根据银行卡号 获取 银行卡类型.银行名称和银行编码 自动格式化银行卡号.手机号.身份证号输入的工具类 效果图 特点 支持自动根据银行卡号获取出银行名称.银行编码.银行卡类型 ...

  8. vue获取后台的文件流并且转换成图片

    vue获取后台的文件流并且转换成图片 1.添加request的responseType export function addCode(Equip,data) { return request({ m ...

  9. BankCardUtils 根据银行卡号 获取 银行卡类型、银行名称和银行编码 自动格式化银行卡号、手机号、身份证号输入的工具类

    BankCardUtils 项目地址:nanchen2251/BankCardUtils  简介:根据银行卡号 获取 银行卡类型.银行名称和银行编码 自动格式化银行卡号.手机号.身份证号输入的工具类 ...

最新文章

  1. VS code 插件配置手册
  2. 使用Java语言从零开始创建区块链
  3. Spring5的通信报文
  4. mysql 临时表增加主键_MySQL之重建表
  5. Android应用程序之间共享文字和图片(一)
  6. 使用Kubespray部署生产可用的Kubernetes集群(1.11.2)
  7. Minor GC和Full GC
  8. 谷歌 CEO 发全员公开信:今年将放缓招聘速度
  9. Ubuntu编译内核及grub的一些笔记
  10. 【线程安全的List】CopyOnWriteArrayList的原理及使用
  11. 一次失败的做题经历(HDU2112)
  12. linux 怎么添加文件类型,如何在Linux/Unix上添加基于文件类型的文件扩展名?
  13. vb mysql 实例,vb数据库(vb编辑access数据库实例)
  14. FFmpeg 图片转TS
  15. 抖音收购musical.ly后,最难过的为什么是快手?
  16. 为什么 BI 软件都搞不定关联分析
  17. 既然选择了远方,便只顾风雨兼程
  18. 视频号容易被官方封号的违规操作,你中招了吗?
  19. 写个厦门市健身徒步爬山线路的web静态页面
  20. 逝者已逝,愿生者坚强

热门文章

  1. TC358860XBG EDP/DP TO DAUL MIPI DSI
  2. android通讯录完整功能实现,Android实现通讯录功能
  3. 安装office提示Office 16 Click-to-Run Extensibility Component
  4. 构建根文件系统的/dev目录
  5. 我彻底服了,大牛讲解信号与系统(通俗易懂)
  6. Java web系统打包成exe安装文件
  7. Android仿学习强国填空题考试界面
  8. 0x7fffffff解析
  9. Google 镜像站IP地址
  10. 申论公文题-方案类-1