手握两个锟斤拷,口中直呼烫烫烫

闲来无事,随便写写。程序员才知道的一个小梗。

问:你了解字符编码吗?

答:锟斤拷

问:那内存有接触吗?

答:烫烫烫,口口口。

保准面试官露出蜜汁微笑。

什么意思?一起来聊聊吧!

字符编码和ASCII

       机器只能识别0和1,日常生活中的字符怎么让机器识别,这就是字符编码。最简单的字符编码是摩斯电码,即滴答滴答滴滴答。而我们的计算机就比较高级了,最开始采用的是ASCII码。

        ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套计算机编码系统。它主要用于显示现代英语,其中共有128个字符,包含了所有的大写和小写字母,数字0到9、标点符号, 以及在美式英语中使用的特殊控制字符等。

Unicode

        ASCII码只有128位,美国人是够用了,我泱泱华夏,光常用汉字就不下五千,根本不够用,怎么办?Unicode登场了。

        Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得计算机可以用更为简单的方式来呈现和处理文字。

UTF-8 UTF-16 UTF-32

       Unicode解决了表示的问题,但是没考虑存储的问题,世界上那么多文字,定长存储的话,内存得爆。于是使用可变长度存储

UTF-8 使用一至四个字节为每个字符编码
UTF-16 使用二或四个字节为每个字符编码
UTF-32 使用四个字节为每个字符编码

GBK,GB2312,GB18030

可变存储解决了一部分存储的问题,但是可不可以继续优化?

举个例子,我们日常输入法需要输出日文吗?苍老师才需要嘛。所有把关于日文的Unicode字符砍掉。等等,中文专用的字符编码GBK便诞生了。

  • GB2312(1980年):16位字符集,收录有6763个简体汉字,682个符号,共7445个字符;

    • 优点:适用于简体中文环境,属于中国国家标准,通行于大陆,新加坡等地也使用此编码;

    • 缺点:不兼容繁体中文,其汉字集合过少。

  • GBK(1995年):16位字符集,收录有21003个汉字,883个符号,共21886个字符;

    • 优点:适用于简繁中文共存的环境,为简体Windows所使用,向下完全兼容gb2312,向上支持 ISO-10646 国际标准 ;所有字符都可以一对一映射到unicode2.0上;

    • 缺点:不属于官方标准,和big5之间需要转换;很多搜索引擎都不能很好地支持GBK汉字。

  • GB18030(2000年):32位字符集;收录了27484个汉字,同时收录了藏文、蒙文、维吾尔文等主要的少数民族文字。

    • 优点:可以收录所有你能想到的文字和符号,属于中国最新的国家标准;

    • 缺点:目前支持它的软件较少。

锟斤拷

“�”不要怀疑,没有乱码,就是要打这个字符。“�”这个字符在Unicode字符集中表示无法显示的特殊字符,在UTF-8下,他的16进制形式是'0xEF 0xBF 0xBD'(三个字节)。

当连续两个“�”“�”字符放一起时:'0xEF 0xBF 0xBD’,‘0xEF 0xBF 0xBD'。

一旦将这个UTF-8字符转换为GBK码(两个字节),便是:‘0xEF 0xBF ’,‘0xBD 0xEF’,‘0xBF 0xBD’。

其对应的GBK字符便是:锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。

烫烫烫

在debug模式下,VC会把栈中新分配的内存初始化为0xcc,而把堆中新分配的内存初始化为0xcd。把0xcc和0xcd按照字符打印出来,就是烫和屯了。

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值