• php检测文件内容编码的方法


    核心用到的是mb_convert_encoding函数,示例代码如下:

    <?php
    header("Content-type: text/html; charset=utf-8");
    
    /**
     * 获取内容的编码
     * @param string $str
     */
    function get_encoding($str = "") {
        $encodings = array (
            'ASCII', 
            'UTF-8', 
            'GBK' 
        );
        foreach ( $encodings as $encoding ) {
            if ($str === mb_convert_encoding ( mb_convert_encoding ( $str, "UTF-32", $encoding ), $encoding, "UTF-32" )) {
                return $encoding;
            }
        }
        return false;
    }
    /**
     * 
     * 检测utf-8内容是否含有BOM头信息
     * @param string $str
     */
    function utf8_has_bom($str) {
        $chars = substr ( $str, 0, 3 );
        $bom = chr ( 0xEF ) . chr ( 0xBB ) . chr ( 0xBF );
        return $chars === $bom;
    }
    
    
    // $filename = 'C:UsersAdministratorDesktop	est.txt';
    // $filename = 'C:UsersAdministratorDesktopansi.txt';
    // $filename = 'C:UsersAdministratorDesktopUnicode.txt';
    $filename = 'C:UsersAdministratorDesktopmy.txt';
    
    // 检测编码
    $str = file_get_contents($filename);
    $encode = get_encoding($str);
    var_dump($encode);
    
    
    // 转换成"UTF-8"编码
    if($encode != 'UTF-8'){
        $str = mb_convert_encoding($str, "UTF-8", $encode);
    }
    
    var_dump($str);

    参考文档:https://gist.github.com/welefen/7746175

  • 相关阅读:
    布局的诡异bug合集+解决方法(更新中)
    java并发:CopyOnWriteArrayList简单理解
    java集合: LinkedList源码浅析
    Idea设置类注释模板
    jquery使用FormData提交数据
    postman发送json请求
    消息队列的简单理解
    如何设计一个消息队列?
    SpringBoot配置logback
    linux下安装kafka
  • 原文地址:https://www.cnblogs.com/shaoyikai/p/5667824.html
Copyright © 2020-2023  润新知