自己写了一个php检测文件编码的函数
关于文件编码的检测,百度一下一大把都是,但是确实没有能用的、
很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出、
看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱、
最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,
还包括自动检测编码并按指点编码读取文件的函数、
源码献上,不喜勿喷。
网上的方法我试过没用才写的,说不定环境不一样导致的。
所以万一没用,也别喷我,我只是共享想思路而已、、
代码如下:
<?php
/**
* 检测文件编码
* @param string $file 文件路径
* @return string|null 返回 编码名 或 null
*/
function detect_encoding($file) {
$list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1');
$str = file_get_contents($file);
foreach ($list as $item) {
$tmp = mb_convert_encoding($str, $item, $item);
if (md5($tmp) == md5($str)) {
return $item;
}
}
return null;
}
/**
* 自动解析编码读入文件
* @param string $file 文件路径
* @param string $charset 读取编码
* @return string 返回读取内容
*/
function auto_read($file, $charset='UTF-8') {
$list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1');
$str = file_get_contents($file);
foreach ($list as $item) {
$tmp = mb_convert_encoding($str, $item, $item);
if (md5($tmp) == md5($str)) {
return mb_convert_encoding($str, $charset, $item);
}
}
return "";
}
相关推荐
-
php下检测字符串是否是utf8编码的代码
function is_utf8($string) { return preg_match('%^(?: [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # exc
-
php检测文件编码的方法示例
关于文件编码的检测,百度一下一大把都是,但是确实没有能用的.很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出.看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱.最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,还包括自动检测编码并按指点编码读取文件的函数.源码献上. 复制代码 代码如下: <?php /*** 检测文件编码 * @param string $file 文件路径*
-
完美的2个php检测字符串是否是utf-8编码函数分享
在php开发中有时候会用到转码函数,比如iconv(),mb_convert_encoding()函数,在用函数转码的时候或者解码的时候我们有时候需要先判断当前字符串编码类型,不如是否是utf-8编码,是的话然后进行编码转换等操作.下面是小编整理的目前web开发中网上使用率比较高的.好的php关于UTF-8编码的判断函数,代码如下: function is_utf8($string) //函数一 { // From http://w3.org/International/questions/qa
-
php检测文本的编码
通过对文本的一次循环编码,来判断是否属于该编码. public function chkCode($string) { $code = array( 'ASCII', 'GBK', 'UTF-8' ); foreach ($code as $c) { if ($string === iconv('UTF-8', $c, iconv($c, 'UTF-8', $string))) { return $c; } } return null; } 以上所述就是本文的全部内容了,希望大家能够喜欢.
-
PHP检测字符串是否为UTF8编码的常用方法
本文实例总结了PHP检测字符串是否为UTF8编码的常用方法.分享给大家供大家参考.具体实现方法如下: 检测字符串编码可以有很多种方法,如利用ord获得字符的进制然后进入判断,或利用mb_detect_encoding函数来处理,下面整理了四种常用方法供大家参考. 例子1 复制代码 代码如下: /** * 检测字符串是否为UTF8编码 * @param string $str 被检测的字符串 * @return boolean */ function is_utf8($str){ $len = s
-
自己写了一个php检测文件编码的函数
关于文件编码的检测,百度一下一大把都是,但是确实没有能用的. 很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出. 看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱. 最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数, 还包括自动检测编码并按指点编码读取文件的函数. 源码献上,不喜勿喷. 网上的方法我试过没用才写的,说不定环境不一样导致的. 所以万一没用,也别喷我,我只是共享想思路
-
用asp实现检测文件编码
最近,在搞这个东西,网上也找不到asp相关的,如果有人很早弄出来了,也不要笑话偶:费了好久,总算搞定: 原理:用stream对象预读文件的头两个字节,分析判断出utf-8,unicode,ANSI(简体中文操作系统,即gb2312)编码 相关资料: ANSI: 无格式定义: Unicode: 前两个字节为FFFE: Unicode big endian: 前两字节为FEFF: UTF-8: 前两字节为EFBB: 复制代码 代码如下: function checkcode(path)
-
php批量转换文件夹下所有文件编码的函数类
函数代码: <?php /** * 把一个文件夹里的文件全部转码 只能转一次 否则全部变乱码 * @param string $filename */ function iconv_file($filename,$input_encoding='gbk',$output_encoding='utf-8') { if(file_exists($filename)) { if(is_dir($filename)) { foreach (glob("$filename/*") as $
-
python开发一个解析protobuf文件的简单编译器
引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ply使用 简介 如果你不是从事编译器或者解析器的开发工作,你可能从未听说过ply.ply是基于python的lex和yacc,而它的作者就是大名鼎鼎Python Cookbook, 3rd Edition的作者.可能有些朋友就纳闷了,我一个业务开发怎么需要自己写编译器呢,各位编程大牛说过,中央决定
-
python3 写一个WAV音频文件播放器的代码
环境:ubuntu 16.04 python3.5 pycharm 包 : wave pyaudio sys 上代码:AudioPlayer.py # coding:utf-8 # author:king # brief : 播放wav音频文件 import wave from pyaudio import PyAudio import sys def player(filename): chunk = 1024 wf = wave.open(filename, 'rb') p = PyAudi
-
使用python批量转换文件编码为UTF-8的实现
由于这两天换了IDE,在导入以前的工程的时候发现了一个大问题,由于以前脑残的我不知道改编码方式,导致出现了大量的GBK,这就很难受,要是一个两个还好说,可是这么多要是一个一个的改我会觉得现在的我比以前还脑残,于是乎,我就想用python批量的修改一下,然后就产生了这篇文章,其中好多不足的地方还请大佬指导 本来一开始的思路还是比较清晰,觉得也比较简单,天真的认为用GBK的方式读取出文件内容,然后UTF8写入就好了,可是在实际的操作中我发现我就是太天真了,出现了大量的问题,比如说: 怎么查看文件的编
-
ASP生成静态文件编码为UTF-8格式的HTML文件
一般我们在ASP环境下,运行动生静操作时都用到的是FSO,他是专门对文件进行操作的一个组件,他FSO的编码属性只有三种,系统默认,Unicode,ASCII,并没有我们要的utf-8,所以一般中文系统上使用FSO组件生成的文件都是gb2312格式的了,即便您在网页内写上charset="utf-8"也是没用的 要生成utf-8格式的文件,ASP环境下我们用 ADODB.Stream代替FSO读写utf-8文件,因为,ADODB.Stream,有一个CharSet 属性,可以让您定义要打
-
vbs脚本实现批量转换文件编码
最近需要使用SourceInsight查看分析在Linux系统下开发的项目代码,我们知道Linux系统中文本文件默认编码格式是UTF-8,而Windows中文系统中的默认编码格式是Gb2312.系统内的编码格式有所区别倒无伤大雅,关键的是SourceInsight竟不支持UTF-8,导致项目代码内的中文注释全部乱码! 既然SourceInsight不支持UTF-8编码的文件,那我们就得想办法将UTF-8的代码文件转化为GB2312编码的.首先想到的是到网上搜一下"批量编码转换工具",结
-
php实现文件编码批量转换
有些问题,不能重复转,比如gbk转到utf8,然后有在转成utf8,这样会乱码,我本来试图在转换之前去检测编码的,貌似失败了.我特意试了一个文件,我检测它是是否是gbk或者是utf-8,都返回true.这就不懂了. 复制代码 代码如下: <?php/** * 转换文件编码 * 依赖的扩展filesystem 和 mbstring * @example * <pre> * include_once 'ConvertEncode.php'; * $convert = new ConvertE
随机推荐
- ES6下React组件的写法示例代码
- Lesson01_01 HTML基础
- mybatis分页插件pageHelper详解及简单实例
- jquery实现侧边弹出的垂直导航
- CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
- Codeigniter的一些优秀特性总结
- php解析xml 的四种简单方法(附实例)
- 网页WEB打印控件制作
- 基于JavaScript实现智能右键菜单
- springMVC+ajax实现文件上传且带进度条实例
- ExtAspNet GridPanel的一般用法
- jquery得到iframe src属性值的方法
- js中查找最近的共有祖先元素的实现代码
- Android屏幕及view的截图实例详解
- Android开发中Activity创建跳转及传值的方法
- Spring Boot整合RabbitMQ开发实战详解
- 详解Linux Namespace之User
- php从数据库读取数据,并以json格式返回数据的方法
- python多线程+代理池爬取天天基金网、股票数据过程解析
- 手动编译C#代码的方法