php获取数据编码,php 获取编码和转换编码
做爬虫抓取页面的时候,常常有非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 获取编码和转换编码相关推荐
- python实现批量转换文件编码(批转换编码示例)
这篇文章主要介绍了python实现批量转换文件编码示例,指定文件编码.目录或扩展名即可进行转换,大家参考使用吧 # -*- coding:utf-8 -*- __author__ = 'walksky ...
- linux字符串编码转换函数,Linux C++ 字符串 编码识别、编码转换
最近在做一个类似垂直下载的爬虫系统.下载之后有个解析模块,解析之后要求编码一致的向后传入索引,便遇到了编码转换问题. 1. 编码的识别 推荐使用 libchardet, 可以在这个页面下载,使用说明就 ...
- 【Linux】文件的编码语系转换与换行符转换
1.编码语系转换 编码是信息从一种形式转换成另一种形式的过程,有一定的编码格式.规则,那么在解码时,如果格式有误,就会出现常见的乱码现象.常见的中文编码语系有gb2312.big5.gbk.utf8等 ...
- 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )
文章目录 一. 头文件.成员变量准备 二. 创建 FAAC 编码器 三. 获取并设置 FAAC 编码器参数 四. 设置 FAAC 编码器编码标准 五. 设置 FAAC 编码器 AAC 编码规格 六. ...
- mp4视频获取时长、封面图、编码、转码(mpeg4转h264)工具类
application.properties server.port=8908 file.uploadfolder=D:/school/ #分片文件临时目录 file.chunkfolder=D:/s ...
- C语言标准库里的获取时间函数及时间格式转换详解
C语言标准库里的获取时间函数及时间格式转换详解 头文件: #include <time.h> 相关库函数(截图摘自:https://www.runoob.com/cprogramming/ ...
- BankCardUtils(根据银行卡号 获取 银行卡类型、银行名称和银行编码 自动格式化银行卡号、手机号、身份证号输入的工具类)
BankCardUtils 根据银行卡号 获取 银行卡类型.银行名称和银行编码 自动格式化银行卡号.手机号.身份证号输入的工具类 效果图 特点 支持自动根据银行卡号获取出银行名称.银行编码.银行卡类型 ...
- vue获取后台的文件流并且转换成图片
vue获取后台的文件流并且转换成图片 1.添加request的responseType export function addCode(Equip,data) { return request({ m ...
- BankCardUtils 根据银行卡号 获取 银行卡类型、银行名称和银行编码 自动格式化银行卡号、手机号、身份证号输入的工具类
BankCardUtils 项目地址:nanchen2251/BankCardUtils 简介:根据银行卡号 获取 银行卡类型.银行名称和银行编码 自动格式化银行卡号.手机号.身份证号输入的工具类 ...
最新文章
- VS code 插件配置手册
- 使用Java语言从零开始创建区块链
- Spring5的通信报文
- mysql 临时表增加主键_MySQL之重建表
- Android应用程序之间共享文字和图片(一)
- 使用Kubespray部署生产可用的Kubernetes集群(1.11.2)
- Minor GC和Full GC
- 谷歌 CEO 发全员公开信:今年将放缓招聘速度
- Ubuntu编译内核及grub的一些笔记
- 【线程安全的List】CopyOnWriteArrayList的原理及使用
- 一次失败的做题经历(HDU2112)
- linux 怎么添加文件类型,如何在Linux/Unix上添加基于文件类型的文件扩展名?
- vb mysql 实例,vb数据库(vb编辑access数据库实例)
- FFmpeg 图片转TS
- 抖音收购musical.ly后,最难过的为什么是快手?
- 为什么 BI 软件都搞不定关联分析
- 既然选择了远方,便只顾风雨兼程
- 视频号容易被官方封号的违规操作,你中招了吗?
- 写个厦门市健身徒步爬山线路的web静态页面
- 逝者已逝,愿生者坚强