PHP文件及数据编码转换解决乱码问题-文件系统转换

ThinkPHP创建网站时使用UTF8编码,包括数据库操作默认情况下也使用与文件系统相同的编码。但有些第三方应用,使用的并非UTF8编码,如果在当前应用中调用,将会出现异常,例如乱码、解释错误等。事实上PHP已经内置了iconv函数用于处理字符编码,但只能处理字符串。ThinkPHP内置了CodeSwich类库,能够方便地对PHP及HTML文件进行转码,支持批量转码。转码后开发人员就可以方便地调用不同编码的类库及函数。

1、DetectAndSwitch方法

DetectAndSwitch方法可以方便地对单个PHP、HTML、JS等文件进行编码转换,DetectAndSwitch方法形式如下。

static function DetectAndSwitch($filename,$out_charset)

其中参数filename表示需要转码的有效文件;参数out_charset表示转码后的编码,接受的输出编码与iconv函数一样。如以下代码所示。

PHP文件及数据编码转换解决乱码问题

需要注意的是转码后原文件将会被替换,这就意味着在Linux系统下,Web服务器对该文件必须具备可读可写权限。

2、CodingSwitch方法

很多第三方类库都不是由单个文件构成的,而是由一系列的类库构成的。CodingSwitch方法可以实现对整个目录下的PHP或者HTML等文件进行编码转换,函数形式如下:

static function CodingSwitch($app = "./",$charset='UTF-8',$mode = "FILES",$file_types = array(".html",".php"))

其中参数app表示目录路径;参数charset表示文件转换的目标编码;参数mode表示目录遍历模式,保持默认即可;参数file_types表示文件匹配后缀名,只有匹配的文件才进行转码。CodingSwitch方法的使用非常简单,如下代码所示。

PHP文件及数据编码转换解决乱码问题

推荐阅读