ASCII UNICODE ANSI UTF 之间的关系理解

在学习字符编码的过程中,对这些东西的关系很模糊,网上看到的资料也都是各自的具体的编码规则,对于关系没有很明确,所以在学习过程中就一知半解的。这篇文章主要是记录我所了解到的这些编码的关系,而不注重于具体的编码规则。

ASCII码

ASCII码就是用了一个字节,表示128个字符,包括了一些“abcd“英文字母,“1234”阿拉伯数字,换行符"\r",“\n”,结束符"\0"等等

GB2312

简单来说就是中文汉字的字符集,规定哪几个字节对应哪个中文,这种编码规则就只能编中文这些,英文可能可以没了解过,但是韩文啊什么其他鸟语就不行。表示中文的还有什么GBK啥的,基本都是在GB2312的基础上扩充的。

UNICODE码

不同国家有不同语言,不同语言如果都用一个字节,肯定会有冲突,那么就会乱码。UNICODE码用了好几个字节表示一个字符,兼容了许多国家的语言字符集等,包括了ASCII,反正它总有方法去表示各种鸟语然后不引起冲突。

ANSI编码

这是一个比较坑的概念,我遇到的问题就是,可以说他压根就不是什么编码,他是根据系统的locale,或者说语言时区啥的来去选择相应的编码规则。
详细可查看这篇文章: ANSI是什么编码?
这里简单说一下,比如我语言环境选的是中文,中国啥的,此时在编码类型为ANSI的文件里输入中文,他就会用GBK或者GB2312什么的中文字符的编码规则去保存。如果我弄的是英文,韩文语言环境,他就会用相应的英文,韩文的编码规则去保存,简单来说,他压根就不是啥编码,他具体的编码规则要根据locale来判断。(之前我一直以为他应该是英文字符的编码,但是英文字符已经有ASCII了呀,就百思不解。直到我在windows把ANSI编码的文件放到linux上去查看编码规则,发现不是ANSI,去搜索相关资料才知道)
你跟我说这叫编码?

UTF

这特么才是编码,ANSI那算什么编码?,UTF-8,-16,-32就是将UNICODE这种字符集进行编码,因为UNICODE那种方法会有一定的缺点,主要是有些只需要一个字节的字符,UNICODE可能也要用多个字节表示,就比较浪费空间,反正理解上就是将UNICODE再处理一下,在解码的时候就是将UTF这种格式解成UNICODE。

写得比较少,具体的编码规则建议再单独去学习。

编译时候的编码

在gcc编译的时候,默认使用utf-8来解析源文件内容,可以使用finput-charset和fexec-charset 参数去指定输入和输出的编码规则,还有一些其他程序,比如freetype等程序,默认使用的编码规则也不一样,用的是utf-16,具体问题具体分析吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值