字符编码

背景

页面需求,将一个含中文文案的js上传到amis,出现乱码:

字符编码种类

常见编码及其规则

如图,箭头方向为字符集扩充方向,箭头末端对始端兼容。

编码长度及范围

编码长度表示范围
ASCII8bit英文字母+符号
ISO-8859-11B(16bit)ASCII+欧洲语言
BIG2BASCII+繁体汉字(台湾)
GB23122BASCII+简体汉字
GBK2BBIG+GB2312+日韩汉字
GB180304BGBK+日语、韩语、少数民族文字
Unicode(UTF-8/12/16)1-4BASCII+全球文字

UTF8

UTF8用1-4B(8-32bit)表示字符,开始连续为1的bit数量表示B的数量:

1B:0xxxxxxx (就是ASCII)
2B:110xxxxx xxxxxxxx
3B:1110xxxx xxxxxxxx xxxxxxxx
4B:1111xxxx xxxxxxxx xxxxxxxx xxxxxxxx
复制代码

虽然Unicode和GB系列都能表示汉字,但并不兼容,同一汉字两种编码是不一样的。

常见乱码样式原因

中文乱码多由编码方式和解码方式不一致导致,常见乱码如下:

乱码为复杂汉字

如,文件上传到amis后,“安徽省”变成“瀹夊窘鐪?” 【Utf编码】【GB解码】,一般在两套不同汉字编码方式的系统中 UTF-8用1-4B表示字符,“安徽省”三个字各用3B:e5ae89 e5bebd e79c81 GBK用2B表示字符,所以按e5ae 89e5 bebd e79c 81解析,得到:瀹夊窘鐪?

乱码为菱形问号

如,文件在VScode打开后:

菱形问号是Unicode字符"REPLACEMENT CHARACTER”,表示不能识别。 【GB编码】【Utf解码】 比如:“吃饭”,GBK编码:b3d4 b7b9 UTF8解码: 第一个B:b3—>10110011,不在UTF8编码内,� 第二个B:d4—>11010100,符合2B格式,解码d4b7,是个阿拉伯文:Է 第四个B:b9—>10111001,不在UTF8编码内,�

乱码为?

【ISO8859-1编码】【ISO8859-1解码】,一般在国外网站、软件中输入汉字产生 比如:“吃饭”,ISO8859-1编码,编码失败成:3f 3f 再解码:??

乱码为数学符号

【GB编码】【ISO8859-1解码】 比如:“你好”,GBK编码:4f60 597d ISO8859-1,1B,按4f 60 59 7d解码:ä½ å¥½

相关工具

在线编码、解码

tool.chinaz.com/tools/urlen…

vscode

默认跟随mac,utf-8,可以设置编码:

转载于:https://juejin.im/post/5c37345fe51d45522851dfbd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值