- 积分
 - 2
 
- 威望
 -  
 
- 金钱
 -  
 
- 注册时间
 - 2013-2-21
 
- 在线时间
 -  小时
 
- 最后登录
 - 1970-1-1
 
 
 
 
 
 
 | 
 
本贴给出以下文章的补充,对空间用户没有系统权限的情况, 
 
https://www.vpser.net/manage/lnmp-nginx-chinese-filename-directory.html 
 
 
原创:国外Linux空间中文文件名网页可以用unicode码正确显示! 
 
(花很多时间探索得到的经验 分享:) 
 
Linux/Unix下如果能更改系统设置,中文文件名(或文件夹目录名)容易显示,否则不能直接显示,尤其在国外主机服务器上. 
 
实际上主机将中文文件名网址改为unicode,要正确显示中文文件名网页,需要将中文文件名改为uncode编码. 
 
中文文件名改为uncode编码可以用php函数iconv,例如以下php脚本: 
 
 
<?php 
echo '“于欣”的unicode码:['; 
echo iconv('GBK', 'UTF-8', '于欣'); 
echo ']'; 
?> 
 
 
以下两个中文名网页就是这样实现的: 
yuxin.net/于欣 
pubnic.com/于欣 
 
我不喜欢看uncode码文件名,而且php程序读写也不用转换,所以我可能不用unicode码存储文件在另外文件夹目录,然后link过来: 
ln -s ../data-dir/于欣 浜庢 
 
cgi脚本 转换为unicode码的程序:我查到以下用法: 
    use Encode qw/encode decode/; 
    print encode("utf8", decode("gb2312", "于欣")); 
 
下面是实际使用的例子,插入雷傲论坛程序dosavemodify.pl中,当用户名只含有 字母数字- 时存储目录取在网站根目录下,否则取在数据目录下 并且 符号link到网站根目录下unicode码目录: 
 
$memberfiletitleu=$memberfiletitle; 
$memberfiletitleu =~ tr/a-zA-Z0-9\-//d; # 用户名去掉 字母 数字 -  
if($memberfiletitleu eq "") { # 如果去掉 字母 数字 - 后为空,则存储目录取在数据目录下 
    $udir=$lbdir."../../".$host."/$memberfiletitle"; 
} else { # 否则取在数据目录data-dir下 
    $udir=$lbdir."../../../date-dir/".$host."/$memberfiletitle"; 
    use Encode qw/encode decode/; 
    $systlns="ln -s ".$udir." ".$lbdir."../../".$host."/"; 
    system($systlns.encode("utf8", decode("gb2312", $memberfiletitle))); # 符号link到网站根目录下unicode码目录 
} 
 
这些刚刚加在 pubnic.com , 欢迎测试,保证网址/二级域名 能稳定可靠使用: 
www点beihang.com/用户名 用户名.beihang.com 用户名.yaotai.com www点yaotai.com/用户名   
你申请的网址/二级域名能稳定持续永久使用(详细规则制定中...).本博士(yuxin.net)拟在国旗下宣誓为人联网事业保驾护航,“人联网”起点是你的网址OpenID,相关文章请搜索“人联网3.0”: baidu.com/s?wd=%22%C8%CB%C1%AA%CD%F83.0%22&cl=3 |   
 
 
 
 |