欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP 中文乱码,Winodws与Linux下不同处置疑问

程序员文章站 2022-05-21 14:34:42
...
PHP 中文乱码,Winodws与Linux下不同处理疑问?
引用
我用 wamp 自己搭建了一个本地站点学习 PHP ,系统是 Windows8 , WEB 网页是:
编码,
然而在处理中文目录与文件名时出现乱码,在网上搜索一下说是要用
$dir=iconv('UTF-8','GB2312',$dir); 解码目录为中文然后再操作,然后再用
$dir=iconv('GB2312','UTF-8',$dir); 反编码显示出来。
这方法也确实可行。
然而没想到的上我上传页面到购买的 WEB HOSTING 服务器上时,会出现乱码,
而不用解码与反解码操作时不会出现乱码,WEB HOSTING 是 LINUX 下的 CPANEL,
实在是想不通为什么为出现这种差别。
小弟初学PHP,有大侠为我解惑一下出现这种问题的原因吗?
或是根本是我本地机子上的站点没有配置好?

------解决思路----------------------
操作系统字符集
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);
都可以
PHP 中文乱码,Winodws与Linux下不同处置疑问

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频