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

maplewi 2015-06-12 09:06:12
引用
我用 wamp 自己搭建了一个本地站点学习 PHP ,系统是 Windows8 , WEB 网页是:
<meta charset="utf-8">编码,
然而在处理中文目录与文件名时出现乱码,在网上搜索一下说是要用
$dir=iconv('UTF-8','GB2312',$dir); 解码目录为中文然后再操作,然后再用
$dir=iconv('GB2312','UTF-8',$dir); 反编码显示出来。
这方法也确实可行。
然而没想到的上我上传页面到购买的 WEB HOSTING 服务器上时,会出现乱码,
而不用解码与反解码操作时不会出现乱码,WEB HOSTING 是 LINUX 下的 CPANEL,
实在是想不通为什么为出现这种差别。
小弟初学PHP,有大侠为我解惑一下出现这种问题的原因吗?
或是根本是我本地机子上的站点没有配置好?
...全文
270 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲雪星枫 2015-06-13
  • 打赏
  • 举报
回复
其实不建议使用中文目录路径。 把GB2312改为GBK试试。
xuzuning 2015-06-13
  • 打赏
  • 举报
回复
是的,既然是通用的,那么就要针对不同的环境做出相应的应对 不能把问题留给用户 比如你的中文文件名问题,就不应该简单的 $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); 都可以
maplewi 2015-06-13
  • 打赏
  • 举报
回复
如果我开发一个PHP的通用模版,怎么办,还要判断 系统集?
xuzuning 2015-06-13
  • 打赏
  • 举报
回复
操作系统字符集 Winodws GBK Linux UTF-8 当网页字符集与操作系统字符集相同时,文件名就不需转码

21,892

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧