自己写了一个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;
}
```
还有自动编码并读取文件的函数:
```php
/
自动编码读入文件
@param string $file 文件路径
@param string $charset 读取编码(默认UTF-8)
@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检测文件编码的函数
- 微信小程序 循环及嵌套循环的使用总结
- 用asp实现检测文件编码
- JavaScript中的Math.atan2()方法使用详解
- GridView中点击CheckBox选中一行来改变此行的颜色
- 浅谈php+phpStorm+xdebug配置方法
- node.js将MongoDB数据同步到MySQL的步骤
- js中键盘事件实例简析
- 使用jquery+iframe做一个ajax上传效果(实例)
- Mysql Limit 分页查询优化详解
- mysql5.7以上版本配置my.ini的详细步骤
- mysql installer community 8.0.16.0安装配置图文教程
- PHP获取和操作配置文件php.ini的几个函数介绍
- 基于Bootstrap表单验证功能
- 解决vue-cli项目webpack打包后iconfont文件路径的问题
- win7下memCache的安装过程(具体操作步骤)