一堆的文件编码都是ANSI的,本来想用linux shell批量修改文件编码,却不太熟悉,写了个PHP脚本批量修改html文件的编码,代码如下:
- <?php
-
-
- $dir = './jquery/jquery/';
-
- $move_to = './jquery/jquery_new/';
-
- foreach(glob($dir . '*.htm*') as $html)
- {
-
- $fp = fopen($html, 'a+');
- $html_string = fread($fp, filesize($html));
-
-
- $html_string = str_replace('charset=gb2312', 'charset=UTF-8', $html_string);
-
- $file_code = mb_detect_encoding()($html_string, array('UTF-8','GBK','LATIN1','BIG5'));
-
- if($file_code = 'CP936')
- {
- $html_string = mb_convert_encoding($html_string ,'utf-8' , 'gbk');
- }
-
-
- $slice = explode('/', $html);
- $file_name = end($slice);
-
-
- file_put_contents($move_to . $file_name, $html_string);
-
- fclose($fp);
- }
-
- echo 'ok, 执行完成';
其实主要用到mb_detect_encoding检测编码,使用mb_convert_encoding转换编码,这是mbstring扩展的函数,代码如下:
- <?php
-
-
-
-
-
-
-
-
-
-
- $str = 'PHP点点通';
- echo $file_code = mb_detect_encoding($str, array('UTF-8','GBK','LATIN1','BIG5'));
-
-
-
-
-
-
-
-
-
-
- echo mb_convert_encoding($str, 'GBK', 'UTF-8');
|