zoukankan      html  css  js  c++  java
  • LNMP下Nginx 中文文件名或目录404无法访问的解决方法

    貌似很多人还是会遇到中文乱码的问题,Apache可以使用mod_encoding支持中文目录和文件,LNMP下Nginx其实不需要安装额外的组件即可支持中文文件名或中文目录,下面说一下常见的CentOS、Debian、Ubuntu Linux发行版下的设置方法和可能会遇到的问题:

    设置前可以执行:locale 看一下,如果显示是en_US.UTF-8,即是正常,不用按下面的步骤设置。如果显示其他编码需要按如下步骤设置。

    CentOS:

    编辑/etc/sysconfig/i18n 文件,内容修改为:(可以使用vinanowinscp图形管理软件,依个人口味选择)
    LANG="en_US.UTF-8"
    SYSFONT="latarcyrheb-sun16"

    保存,重启系统生效,也可以编辑/etc/profile在文件末尾加入 export LANG="en_US.UTF-8" 端口SSH客户端,重新连接一下就生效。

    Debian:

    apt-get install -y locales
    dpkg-reconfigure locales

    执行 dpkg-reconfigure locales后会出现如下对话框:

    用向下的方向键找到en_US.UTF-8 UTF-8,按空格选择,再按回车键。

    再按向下键选择en_US.UTF-8,再按回车键确认。
    重启系统。

    Ubuntu:

    编辑/etc/default/locale 文件,修改内容为(没有的话创建一个):
    LANG="en_US.UTF-8"
    LANGUAGE="en_US:en"
    保存,再执行:locale-gen en_US en_US.UTF-8
    重启系统。

    执行:locale 看一下是否显示是en_US.UTF-8,如果报错,请在本文反馈。

    按以上步骤设置好后即可支持中文,可以上传中文的文件或中文的目录。

    可能会遇到的问题:

    如果使用Winscp或Flashfxp之类的工具上传都要设置为utf-8才可以,设置步骤如下:

    WinSCP:

    1. 打开WinSCP,在登录界面中选定要登录的会话
    2. 点击旁边的"编辑"按钮
    3. 在左侧树型菜单中找到"环境"项,并打开它
    4. 在右侧中一项为"文件名UTF-8编码",选择"开启",设置完成。

    FlashFXP:

    1. 打开FlashFXP,点"站点",选择"站点管理器"
    2. 点击选择要登陆的站点,在右侧点击"选项"选项卡,"字符编码" 后面的列表框里选择UTF-8,设置完成。

    如果在Putty或XShell等SSH客户端下显示乱码,也是需要修改字符编码为UTF-8的。

    Putty:

    1. 打开Putty,在登录会话界面中选定Default Settings
    2. 再点击左侧树形菜单中的"Window",再点"Translation",中文版的话对应的是"窗口","转换"
    3. 在右侧界面中有一项"Remote character set:",中文版的是"假定接收数据的字符集",在下拉列表中选择"UTF-8",设置完成。

    XShell:

    1. 打开XShell,在会话列表要登录的会话上右击,选择"Properties"
    2. 在点击"Terminal",在Translation里有个Encoding的下拉列表框,选择"UTF-8",设置完成,简单点的设置方法,直接点上面工具栏里面的蓝绿色的圆球,选择"UTF-8"。

    说了这么多,其实就是一点,编码一致,编码不一致就会出现乱码。

    如果是在没有更改编码前上传的文件,设置好后依然会是乱码的,建议重新上传一下文件。如果没有原来文件的备份可以使用下面命令进行转换:for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done 

    其中*.html为要转换的文件类型,也可以更换为*.txt,*.rar 主要是看你是什么文件了,里面的GBK为源文件的编码类型,如果不知道源文件的编码类型可以执行:file -bi 文件名 。

    如果想在Windows下改的话其实也是可以的Editplus就有批量修改文件编码的功能,其他的软件可能也有此类功能,可以自行研究一下。

    如果是目录的话,目前好像是没有办法进行转换。

    还有一个问题,如果是html之类的网页文件,如果原来是网页内容是gb2312或类似的非utf-8的编码,先要将网页里面的charset 改为charset=utf-8,再转换文件编码,否则网页还是会乱码的。

  • 相关阅读:
    CodeForces 659F Polycarp and Hay
    CodeForces 713C Sonya and Problem Wihtout a Legend
    CodeForces 712D Memory and Scores
    CodeForces 689E Mike and Geometry Problem
    CodeForces 675D Tree Construction
    CodeForces 671A Recycling Bottles
    CodeForces 667C Reberland Linguistics
    CodeForces 672D Robin Hood
    CodeForces 675E Trains and Statistic
    CodeForces 676D Theseus and labyrinth
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4346582.html
Copyright © 2011-2022 走看看