起因: 客户端访问 代理的文件内容出现如下编码的问题
2023-04-22T06:38:19.png

原因:

一、编码集
众所周知,编码集是一种用来囊括不同国家字符集的重要手段

由于计算机是由美国人发明的,所以首先出现的字符集是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文本修改为 简单粗暴

2023-04-22T06:45:50.png

最后修改:2023 年 04 月 22 日
如果觉得我的文章对你有用,请随意赞赏