首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
V2EX  ›  NGINX

centos 系统中文乱码,导致 nginx 请求不到中文资源

  •  
  •   cuixiao603 · 68 天前 · 1660 次点击
    这是一个创建于 68 天前的主题,其中的信息可能已经有所发展或是发生改变。

    云服务器 centos7 系统,中文显示乱码,就导致 nginx 请求不到中文的资源,咋办呢,自己的服务器 locale 命令里的变量一样的,请求中文就没问题 nuqZbd.png nuqrMF.png

    11 回复  |  直到 2019-09-07 15:10:23 +08:00
        1
    demonzoo   68 天前   ♥ 1
    楼主看看是不是字体或者语言包的问题,有可能云端的 centos 没有 JCK 支持。纯属瞎支招,试试安装一下字体呢?
    `yum groupinstall -y Fonts`
        2
    ysc3839   68 天前
    这些文件名带有问号的文件是怎样创建的?自己手动上传的还是用户上传的?
        3
    autogen   68 天前
    文件名哪有用中文的,程序员拖出去毙了
        4
    vuuv   68 天前 via Android   ♥ 1
    有 4 处编码需要检查。URL 里的编码,文件名在文件系统里的编码,操作系统的编码,虚拟终端的编码。
    之前截图能显示中文,那么操作系统和终端的正常,应该都是 UTF8。那么需要使用 locale -a 看下系统支持那些。我没有研究过 LANG=en_US.UTF-8 和 LANG=en_US.utf8 的区别。你可以逐个设置下看看效果。

    至于文件名编码,这里的问号是 ls 替换显示的。忘了有无参数阻止这种替换,但是加管道后应该不会替换了。管道后使用 hexdump -C 查看具体的字节码。
    URL 需要提供下包含文件名的部分,如果编码和文件名编码不一致,再排查起因吧。
        5
    yulgang   68 天前   ♥ 1
    试一下 export LC_ALL="",其他配置不动。
    默认情况下 这个应该是空的,设置了这个还可能导致在终端里无法输入中文,不能创建中文文件,设置成空,就可以在终端创建删除中文的文件。
    然后重启 nginx,还不好使,按楼上说的查。
        6
    lniwn   68 天前   ♥ 1
    之前解决过类似的一个问题,原因是使用的 sftp 上传工具的问题,就是说保存到 centos 服务器上的文件名已经是乱码,而不是终端显示乱码,后来改了下 sftp 编码为 utf8 就可以了。仅供参考。
        7
    cuixiao603   68 天前
    @ysc3839 #2 这是中文显示不出来就显示成问号了
        8
    ysc3839   68 天前 via Android
    @cuixiao603 看你图片不是中文显示不出来吧?我猜测是保存时就是问号了。
        9
    cuixiao603   68 天前
    @yulgang #5 老哥 你说对了啊!就是用的 sftp 客户端的编码问题!
        10
    cuixiao603   68 天前
    @vuuv #4 分析的很全面!
        11
    maxbon   67 天前
    传一个中文字体过去,再安装
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2860 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 11:39 · PVG 19:39 · LAX 03:39 · JFK 06:39
    ♥ Do have faith in what you're doing.