美文网首页
终于解惑随处可见的乱码

终于解惑随处可见的乱码

作者: KimThomas | 来源:发表于2018-12-25 13:43 被阅读0次

    计算机如何存储数据

    • 计算机只能识别二进制,故只能使用二进制存储数据。
    • 由于二进制可以与目前主流的十进制进行相互转换,所以使用十进制转二进制的方式可以存储任一数字,但是没有办法存储符号以及文字。

    编码集

    • 由于没有办法直接存储文字符号,但是可以把图片转换为二进制存储,这样一来,只需要给每个图片上的文字进行一个唯一的编码,再吧这个编码集合到一起,每次需要一个文字或者符号的时候就直接通过该图片的编码进行查询,最终进行显示。
    • 但是这种编码集有很多种,ASCIIUNICODEGBK等等,其中目前最为主流并且最全的是UNICODE,里面几乎涵盖了世界上绝大多数语言的文字,并且后续还会继续补充。

    简化编码集

    • 由于UNICODE较为庞大,所以存储空间也比其他编码集更大,一个英文字母aASCII只需要一个字节的存储空间,但是到了UNICODE则需要两个字节进行存储,并且只会用到一个字节,剩下的一个字节全部为0,及其浪费资源(在那个年代)。
    • UTF-8,UTF-16等编码格式的产生使得上面的问题得以解决,比如,字母'a',在UTF-8的编码下,可以做到只用两个字节去存储,并且需要读取字母'a'时,使用特定的算法可以成功读取到字母'a'的UNICODE编码,这极大地节省了内存空间。

    结束

    至此,从小开始困惑我的乱码问题得以解决,乱码问题的产生,无非就是编码集的不一样,比如在ASCII下,我不管用输入法写了多少汉字,都没办法显示一个汉字,而我在GBK下,所记录的汉字,换在UNICODE下,肯定没办法正常显示,因为他们两个在内存里面所存储的二进制大小就不一致,这就有点像Map里面的key-value一样,你的key不一致,怎么能取得出来相同的value呢?。

    相关文章

      网友评论

          本文标题:终于解惑随处可见的乱码

          本文链接:https://www.haomeiwen.com/subject/kghflqtx.html