云服大带宽服务器务器 centos7 系统,中文显示乱码,就导致 nginx 请求不到中文的资源,咋办呢,自己的服务器 locale 命令里的变量一样的,请求中文就没问题
楼主看看是不是字体或者语言包的问题,有可能云端的 centos 没有 JCK 支持。纯属瞎支招,试试安装一下字体呢?
`yum groupinstall -y Fonts`
这些文件名带有问号的文件是怎样创建的?自己手动上传的还是用户上传的?
文件名哪有用中文的,程序员拖出去毙了
有 4 处编码需要检查。URL 里的编码,文件名在文件系统里的编码,操作系统的编码,虚拟终端的编码。
之前截图能显示中文,那么操作系统和终端的正常,应该都是 UTF8。那么需要使用 locale -a 看下系统支持那些。我没有研究过 LANG=en_US.UTF-8 和 LANG=en_US.utf8 的区别。你可以逐个设置下看看效果。
至于文件名编码,这里的问号是 ls 替换显示的。忘了有无参数阻止这种替换,但是加管道后应该不会替换了。管道后使用 hexdump -C 查看具体的字节码。
URL 需要提供下包含文件名的部分,如果编码和文件名编码不一致,再排查起因吧。
试一下 export LC_ALL="",其他配置不动。
默认情况下 这个应该是空的,设置了这个还可能导致在终端里无法输入中文,不能创建中文文件,设置成空,就可以在终端创建删除中文的文件。
然后重启 nginx,还不好使,按楼上说的查。
之前解决过类似的一个问题,原因是使用的 sftp 上传工具的问题,就是说保存到 centos 服务器上的文件名已经是乱码,而不是终端显示乱码,后来改了下 sftp 编码为 utf8 就可以了。仅供参考。
这是中文显示不出来就显示成问号了
看你图片不是中文显示不出来吧?我猜测是保存时就是问号了。
老哥 你说对了啊!就是用的 sftp 客户端的编码问题!
分析的很全面!
传一个中文字体过去,再安装