1 问题描述如下是正文
- nginx作为文件服务器,中文乱码
- logs/error.log 日志如下
错误图片如下:
error.log: failed (1113: No mapping for the Unicode character exists in the target multi-byte code page)
-
当nginx.conf 字符集为utf8时 web服务显示乱码 点击访问中文目录 出现小节1的错误
-
当 nginx.conf 字符集为gbk时 web服务显示不乱码 但点击访问中文目录 也出现小节1的错误
-
我们对请求的uri进行解码, 确实是gbk 编码 , 换成utf8会乱码. 不过请注意,好多uri解码网站上都是默认按照utf8进行解码的 ,并没有字符编码的选项
以windows10为例 ,它的磁盘路径默认编码为gbk ,而一般对uri编码的解码都使用utf8, nginx应该是默认用utf8对uri进行解码,导致字符集不匹配,nginx在解析请求时找不到路径
4 解决方案-
推荐的方案是修改windows和linux文件名的默认编码
-
注意nginx 的解压后的文件夹不要放在中文路径下
-
windows下
-
搜索语言设置
-
管理语言设置
-
点击更改系统区域设置
-
勾选utf-8 确定, 并同意重启, 不同意不生效
-
将nginx的字符编码配置修改回 utf-8 , 其他不做变化 , cmd 运行 nginx -s reload重载配置 ,刷新页面即可访问中文路径.
注意此时的请求路径提示也变了
-
linux下
- vi /etc/sysconfig/i18n 修改默认字符集为utf8即可



