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

今天在网上寻找关于Nginx访问中文目录及文件名的解决方法,偶然看到qwqg的一篇文章!
解决问题的思路很清晰,特转载过来与大家一起分享!该方法还没有亲自测试,所以不太确定是否真有用!

方法一:

搞了大半天nginx下无法访问中文文件名的问题,现在看来是secureCRT的问题?
看来还是字符集的问题了。
看来nginx不需要象apache那样要单独加载支持中文模块。

服务器端字符集如下
[[email protected]]# locale
LANG=en_US.UTF-8
LC_CTYPE=”en_US.UTF-8″
LC_NUMERIC=”en_US.UTF-8″
LC_TIME=”en_US.UTF-8″
LC_COLLATE=”en_US.UTF-8″
LC_MONETARY=”en_US.UTF-8″
LC_MESSAGES=”en_US.UTF-8″
LC_PAPER=”en_US.UTF-8″
LC_NAME=”en_US.UTF-8″
LC_ADDRESS=”en_US.UTF-8″
LC_TELEPHONE=”en_US.UTF-8″
LC_MEASUREMENT=”en_US.UTF-8″
LC_IDENTIFICATION=”en_US.UTF-8″
LC_ALL=

在nginx.conf文件里配置的字符集也是utf-8
server {
listen 80;
server_name test.cn;
root /data;
index index.html index.jsp;
charset utf-8;

客户端用的是secureCRT,字符集用的是defalut,用rz上传后在服务器上用ls显示乱码,用ie怎么浏览都不能正常看到。
找朋友测试了一下他那边的nginx,中文显示居然一切正常,后来他告诉我他的secrueCRT用的字符集是utf-8,我改用uft-8后再用rz上传文件,在ie下中文可以正常显示了。

方法二:

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

[[email protected] ~]# env|grep LANG
LANG=en_US.UTF-8

二:NGINX配置文件里设置为

server
{
   listen       80;
   server_name  .inginx.com ;
   index index.html index.htm index.php;
   root  /usr/local/nginx/html/inginx.com;
   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支持中文码。。

location /~doc/ {
   proxy_pass http://127.0.0.1:81/;#apache server
}

以上供大家参考!

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

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

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

就是将/home目录下原来文件名是gbk编码方式的全部改为utf-8格式的。这里 -f  后面为原来的编码方式,-t 后面是要更改为的编码方式, -r 表示这个目录下面的所有文件, –notest 表示马上执行,而不是仅仅测试而已。另外这命令好像要root才能执行,因此要加上 sudo。

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

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

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

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

时间: 2024-10-05 23:51:04

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

nginx下禁止访问robots.txt的设置方法

关于robots.txt文件:搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信 息.您可以在您的网站中创建一个纯文本文件robots.txt,在这个文件中声明该网站中不想被robot 访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容. 访问,可以得知我们网站中存在/admin和/bbs,其中/admin是关于后台管理的目录,把这个路径轻易的暴漏显然是不太安全的,下面我们可以通过禁止访问.txt类型的文件来,增

SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法

SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法 2018-03-17 最近在使用SpringCloud搭建微服务的过程中,发现上传文件经过Zuul网关转发的时候,回应为上传文件名中文乱码导致文件的写操作失败,从而导致文件上传失败,但是不经过Zuul转发的时候,文件上传正常,因此猜测是Zuul对上传的请求的编码进行了处理.最终在网上找到了两种解决方案: 方案一.在上传文件的请求路径之前添加字符串“zuul”声明此请求的编码不做处理. 1 2 3 4 5 6 7 8 9 10

Visual Assist X在Windows 8.1下出现中文乱码的解决方法

这主要是输入法造成的,我的输入法中有US.中文.搜狗输入法三个输入法:通过搜狗输入法管理器把"中文"去掉,或者通过语言首选项把"中文"去掉就不会在出现乱码. 这个办法的思路来自于http://www.cnblogs.com/Coling/p/3527233.html,但他说的是把除搜狗之外的都删除,我不赞同,作为开发者,经常输入英文,且经常使用Shift,只保留搜狗,那写代码时要累死.于是尝试删除"中文",结果就搞定了. Visual Assis

iOS 7.1下itms-services在线安装失败的解决方法

前段时间,接到客户的求助,主要是关于无法通过safari在线安装企业级应用的问题.经过一系列测试都没有发现相同现象,最后发现客户使用了还原的功能,把iPad的iOS升级到了7.1.网上搜索了一下,发现从iOS7.1开始,之前使用itms-services://URL方式在线安装ipa文件的方法都失效了,主要表现为在点击安装的时候,会报错为:"无法安装应用程序,因xxx.com的证书无效". 主要原因是苹果公司在iOS 7.1中修改了manifest.plist文件的访问协议,把原来的h

Sublime Text 3打开txt中文乱码的解决方法

Sublime Text是一个非常强大的编辑器,可是对中文的支持并不好,在Sublime Text 2 时,可以通过命令行的方式安装编码包来解决,但Sublime Text 3不能通过这样的方式解决 在安装完Sublime Text 3后要下载一个ConvertToUTF8包放到C:\Users\用户名\AppData\Roaming\Sublime Text 3\Packages(安装目录可能不是这个,但可以在sublime中preference - browse packages打开此目录)

关于myeclipse10.6安装路径下没有common这个目录的解决方法

大家都知道myeclipse10.6破解就是找Myeclipse下的Common\plugins目录进行替换文件,从而破解! 一般情况下,common这个目录就在安装myeclipse的安装目录下,但特殊情况喜爱不在安装目录下: 原因可能如下: 安装时文件夹没有访问权限,导致在安装目录下写不进Common\plugins目录 myeclipse官方故意进行影藏,以防用户进行对此文件的修改: 解决方法如下: 对第一种情况,安装是右击安装包,点"以管理员身份运行". 安装后找安装目录看是否

ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法

原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebService方法,总报这个错误,贴图如下: 解决办法: 1.确定你的Silverlight项目及承载Silverlight的Web程序根目录下都包含2个跨域文件,分别是crossdomain.xml和clientaccesspolicy.xml: crossdomain.xml文件,如下: <?xml ve

SSH Secure Shell Client中文乱码的解决方法

这是SSH Secure Shell Client多年未解决的短板,要求客户端和服务器端都要'UTF-8'编码,Windows中文版的编码是非UTF-8.zh_CN.UTF-8是UTF编码的中文语言环境.Windows使用的是GB2312编码,大多数linux系统支持的是UTF-8编码,而远程登陆时使用的是本地编码,所以会出现乱码的问题:现有几种解决方案: 方案一:修改linux服务器的环境变量 使用linux,在用户根目录下有一个.bash_profile配置文件,该配置只对当前用户有效.若对

php读取mssql日期出现中文字符的解决方法

php读取mssql日期出现中文字符的解决方法 在php代码开头处加下以下代码 ini_set ("mssql.datetimeconvert","0");//关闭mssql默认的日期格式转换 php读取mssql日期出现中文字符的解决方法,布布扣,bubuko.com