PHP 中文乱码,Winodws与Linux下不同处置疑问
程序员文章站
2022-05-21 14:34:42
...
PHP 中文乱码,Winodws与Linux下不同处理疑问?
------解决思路----------------------
操作系统字符集
Winodws GBK
Linux UTF-8
当网页字符集与操作系统字符集相同时,文件名就不需转码
------解决思路----------------------
是的,既然是通用的,那么就要针对不同的环境做出相应的应对
不能把问题留给用户
比如你的中文文件名问题,就不应该简单的 $dir=iconv('UTF-8','GB2312',$dir);
而可以这样:
在配置文件中写到
define('APP_CHARSET', 'UTF-8');
define('OS_CHARSET', substr(PHP_OS, 0, 3) == 'WIN' ? 'GBK' : 'UTF-8');
这样 $dir=iconv('UTF-8','GB2312',$dir);
写作 $dir=iconv('APP_CHARSET, OS_CHARSET, $dir);
就通用化了
还可进一步
function lang(&$str) {
return $str = iconv('APP_CHARSET, OS_CHARSET, $str);
}
程序中
lang($dir);
$path = lang($dir);
都可以
------解决思路----------------------
操作系统字符集
Winodws GBK
Linux UTF-8
当网页字符集与操作系统字符集相同时,文件名就不需转码
------解决思路----------------------
是的,既然是通用的,那么就要针对不同的环境做出相应的应对
不能把问题留给用户
比如你的中文文件名问题,就不应该简单的 $dir=iconv('UTF-8','GB2312',$dir);
而可以这样:
在配置文件中写到
define('APP_CHARSET', 'UTF-8');
define('OS_CHARSET', substr(PHP_OS, 0, 3) == 'WIN' ? 'GBK' : 'UTF-8');
这样 $dir=iconv('UTF-8','GB2312',$dir);
写作 $dir=iconv('APP_CHARSET, OS_CHARSET, $dir);
就通用化了
还可进一步
function lang(&$str) {
return $str = iconv('APP_CHARSET, OS_CHARSET, $str);
}
程序中
lang($dir);
$path = lang($dir);
都可以
相关文章
相关视频