php获取数据编码,php 获取编码和转换编码

1fc21a0bc83b7983425996c688cda5c7.png

做爬虫抓取页面的时候,常常有非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) {}

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值