VPS侦探论坛

 找回密码
 注册
查看: 6678|回复: 0

[总结] :国外Linux空间中文文件名网页可以用unicode码正确显示

[复制链接]
发表于 2013-2-21 11:31:57 | 显示全部楼层 |阅读模式

本贴给出以下文章的补充,对空间用户没有系统权限的情况,

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
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-9-17 02:57 , Processed in 0.024648 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表