起因: 客户端访问 代理的文件内容出现如下编码的问题
原因:
一、编码集
众所周知,编码集是一种用来囊括不同国家字符集的重要手段
由于计算机是由美国人发明的,所以首先出现的字符集是ASCII码集,因此现在所有的字符集也都兼容了ASCII码字符集,这也就是为什么英文基本不乱码的原因之一
二、GBK、UTF-8、UTF-32
GBK属于国标:一个汉字占两个字节 即 : 1xxxxxxx xxxxxxxx 区别于英文字符的一个字节的表示:0xxxxxxx
为了统一全球字符,出现了UTF-32:它让所有的字符都占4个字节,不足四个字符的用00000000来补齐
这样虽然解决了全球字符集统一问题,却带来了一个新的问题:UTF-32内存浪费严重
于是出现了UTF-8,英文字符占1个字节,中文字符占3个字节,也有说法是3-4个字节,这样既那囊括了全球字符,又提供了可变类型的字符长度:1、2、3、4
三、乱码原因
编码和解码时所用的字符集不同,就会乱码
当我们从上游系统抽取数据时,由于各个系统所有的字符集不会完全相同,故需要使用它们编码的字符集来解码,这一过程可以使用抽取工具解决
————————————————
我的服务器文件 .txt 是utf8
那怎么让nginx 代理出来的文件可以按指定编码输出呢
编辑nginx.conf文件,在server块{}里指定字符编码为utf-8
server {
listen 80;
server_name likfr.com;
charset 'utf-8'; #防止txt文本出现乱码,一定要加单引号
location / {
root html/;
index index.html index.htm;
}
access_log logs/likefr.access.log main;
}
另一种方法就是直接把服务器的.txt文本修改为 简单粗暴