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

2019-09-06 10:03:17 +08:00
 cuixiao603

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

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

至于文件名编码,这里的问号是 ls 替换显示的。忘了有无参数阻止这种替换,但是加管道后应该不会替换了。管道后使用 hexdump -C 查看具体的字节码。
URL 需要提供下包含文件名的部分,如果编码和文件名编码不一致,再排查起因吧。
yulgang
2019-09-06 13:46:53 +08:00
试一下 export LC_ALL="",其他配置不动。
默认情况下 这个应该是空的,设置了这个还可能导致在终端里无法输入中文,不能创建中文文件,设置成空,就可以在终端创建删除中文的文件。
然后重启 nginx,还不好使,按楼上说的查。
lniwn
2019-09-06 14:12:08 +08:00
之前解决过类似的一个问题,原因是使用的 sftp 上传工具的问题,就是说保存到 centos 服务器上的文件名已经是乱码,而不是终端显示乱码,后来改了下 sftp 编码为 utf8 就可以了。仅供参考。
cuixiao603
2019-09-06 14:14:54 +08:00
@ysc3839 #2 这是中文显示不出来就显示成问号了
ysc3839
2019-09-06 14:29:59 +08:00
@cuixiao603 看你图片不是中文显示不出来吧?我猜测是保存时就是问号了。
cuixiao603
2019-09-06 16:09:36 +08:00
@yulgang #5 老哥 你说对了啊!就是用的 sftp 客户端的编码问题!
cuixiao603
2019-09-06 16:10:36 +08:00
@vuuv #4 分析的很全面!
maxbon
2019-09-07 15:10:23 +08:00
传一个中文字体过去,再安装

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/598443

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX