php源代码常采用utf-8编码,但windows系统下的文件名采用的编码方式是gbk,所以在php文件中,通过require 示例.php 等类似语句是无法引入确实存在于相关目录下的文件的.相关解决思路,详见代码.个人认为这是一个很有意义的小问题.代码仅以require的封装为例.
/**
* 需要
*
* 功能类似require,增加了对汉语文件名的支持.
*
* 此函数解决windows服务器汉语文件名默认为gbk编码方式,无法通过require引入文件的
* 不足.思路是:已知windows服务器,php会以utf-8解析gbk编码的汉语文件名,则在utf-8
* 编码的文件中把汉语文件名转为某种兼容gbk编码的编码方式,然后再调用require加载文
* 件即可.
*
* $文件 想要通过require引入的文件
*
* 注意:同require一样,若指定文件不存在,将产生 e_compile_error 级别的错误,这将
* 导致脚本中止执行.
*
*/
function 需要($文件)
{
//使用php的预定义常量path_separator判断操作系统类型
if(path_separator==':')
{
//非windows系统,可以直接引入文件
require $文件;
}
else
{
//windows系统,需先将文件名转换为兼容gbk编码的格式
require iconv("utf-8", "gb18030", $文件);
}
}
// --------------------------------------------------------------------