这几日,用nginx
给人共享文件,改了配置文件,然后我的博客本地预览的时候是乱码的,成了这样:
据之前的经验来看,必定是编码格式的问题,当我查看网页代码的时候,神奇的事情就出现了,用Visual Code
查看网页代码是正常的,但是在浏览器里面是乱码的。一开始以为是npm
抽风,重装之后,发现并没有起作用,用hexo s --debug
查看调试信息也没有什么问题,并且正常,生成网页本地查看的时候是乱码,上传到VPS上却又是正常的。怀疑到nginx
上来。 慢慢调整,发现是nginx的配置文件的问题,乱码时的nginx配置文件时这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; listen [::]:80; server_name localhost; location / { root C:\Users\BDZNH\blog\public; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } charset GBK; client_max_body_size 4G; location /src { alias F:\\; autoindex on; autoindex_exact_size off; autoindex_localtime on; } } }
更改之后的配置文件是这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; listen [::]:80; server_name localhost; location / { root C:\Users\BDZNH\blog\public; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } client_max_body_size 4G; location /src { charset GBK; alias F:\\; autoindex on; autoindex_exact_size off; autoindex_localtime on; } } }
正常的时候是这样的
29
行的charset GBK
,问题便出现在这儿,这里让nginx指定了网页的文件编码格式为GBK,但是hexo
生成的网页格式是utf-8
的,两种编码格式不一样,所以乱码。 这里就吐槽一下微软,Windows 系统的默认字符编码集是GBK,据知乎上的大牛说是为了效率,但是字符集的不统一真是一个很肝疼的问题,ssh远程到linux主机,使用了utf-8格式,本地终端使用的却是GBK,调整终端的编码集,远程之后能正常显示中文,但是在本地中文又是乱码的。非得逼我打开几个终端。
生命重在折腾