2023年12月13日发(作者:)

nginx下无法访问中文文件名的解决方法

今天在网上寻找关于Nginx访问中文目录及文件名的解决方法,偶然看到qwqg的一篇文章!

解决问题的思路很清晰,特转载过来与大家一起分享!该方法还没有亲自测试,所以不太确定是否真有用!

方法一:

搞了大半天nginx下无法访问中文文件名的问题,现在看来是secureCRT的问题?

看来还是字符集的问题了。

看来nginx不需要象apache那样要单独加载支持中文模块。

端字符集如下

[root@test]# locale

LANG=en_-8

LC_CTYPE=”en_-8″

LC_NUMERIC=”en_-8″

LC_TIME=”en_-8″

LC_COLLATE=”en_-8″

LC_MONETARY=”en_-8″

LC_MESSAGES=”en_-8″

LC_PAPER=”en_-8″

LC_NAME=”en_-8″

LC_ADDRESS=”en_-8″

LC_TELEPHONE=”en_-8″

LC_MEASUREMENT=”en_-8″

LC_IDENTIFICATION=”en_-8″

LC_ALL=

在文件里配置的字符集也是utf-8

server {

listen 80;

server_name ;

root /data;

index ;

charset utf-8;

客户端用的是secureCRT,字符集用的是defalut,用rz上传后在服务器上用ls显示乱码,用ie怎么浏览都不能正常看到。

找朋友测试了一下他那边的nginx,中文显示居然一切正常,后来他告诉我他的secrueCRT用的字符集是utf-8,我改用uft-8后再用rz上传文

件,在ie下中文可以正常显示了。

方法二:

一:确定你的系统是UTF编码

[root@Tserver ~]# env|grep LANG

LANG=en_-8

二:NGINX配置文件里设置为

server

{

listen 80;

server_name . ;

index ;

root /usr/local/nginx/html/;

charset utf-8;

}三:如果使用putty

windows --> translation -->UTF-8

mkdir NGINX中文技术站

echo NGINX中文技术站 > 中国.html

四,如果是用securecrt 上传文件,请选择 回话-->外观--UTF-8

五,如果出现文件名乱码显示

执行

for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done

另一位朋友的解决方案是:

我现在用的方法是

在后端个别目录用APACHE代理了 。。

APACHE支持中文码。。

以上供大家参考!

================Linux下两个工具convmv和iconv===========

convmv就是更改文件名编码方式的一个工具。比如

sudo convmv -f gbk -t utf-8 -r –notest /home

就是将/home目录下原来文件名是gbk编码方式的全部改为utf-8格式的。这里 -f 后面为原来的编码方式,-t 后面是要更改为的编码方式,

表示这个目录下面的所有文件, –notest 表示马上执行,而不是仅仅测试而已。另外这命令好像要root才能执行,因此要加上 sudo。

iconv是更改文件编码方式的一个工具:

sudo iconv -f gbk -t utf-8 -o outfile infile

-f为原来的编码方式,-t 为输出文件的编码方式, -o表示输出文件名,这利用outfile表示,最后跟上要更改编码方式的文件名sourcefile 。

通过这两个工具,中文文件乱码的问题终于解决。

-r