编码的那些事儿

作者: RasonWu | 来源:发表于2017-01-14 22:01 被阅读64次

其实不管是用哪种编码,本质上保存的都是二进制。
一些基本概念与易错点:

  1. 不同的编码,占用的字节数是不一样的。字符在不同的编码占用的字节是不相同的,一个字节是8位。所以说,你看到的字符串到底占用多少个字节,要取决于到底是用了哪种编码。比如在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个汉字字符储存需要3到4个字节。
  2. iOS中的NSData其实就是二进制。由于从上面已经知道一个汉字在不同的编码,占用的字节数是不一样的,所以占用的位数也就可能不一样。所以其实不难理解,为什么要是用对应的编码才能转换为正确的字符串了。
  3. 不要以为保存的数据就肯定能从某种编码中得到正确的字符串,实际上可能对字节数组进行了修改,不再是UTF8编码了。比如:UTF8编码生成的文件,可能由于加密等原因,先转换为字节数组,对字节数组进行了处理了,然后保存。看到的则是乱码了。解码部分,肯定也是对字节数组处理。所以说,如果编码修改了,两边就会无法匹配到一起,假如可以部分匹配到一起,那么可能两种的字母都是占用一个字节,然后汉字字节数不同。
  4. 一些加密过的数据,如果进行UTF8来解码,又编码,会发现数据导致损坏。比如字节数组修改后,这时实际上用UTF8来解码,得到的字符串实际上已经不是原来的了。比如字节FF和FE在UTF-8编码中永远不会出现,但是由于修改了,出现了这样的字节就会出错。所以导致UTF8先解码,然后编码的结果不一致。
  5. 看到一样,不代表编码一样。一个汉字不同的编码可能占用不同的字节数,就是说二进制位数不相同。所以文件可能是不同的编码,看到的却是一样的字符串。
  6. nodejs可以使用iconv-lite来进行编码转换。
  7. nodejs中buffer类的单位是字节

相关文章

  • 编码那些事儿

    常见编码 文本编码 常见的文本编码方法有:ANSI(多字节)的ASCII编码、GB2312、GBK、GB18030...

  • 编码的那些事儿

    其实不管是用哪种编码,本质上保存的都是二进制。一些基本概念与易错点: 不同的编码,占用的字节数是不一样的。字符在不...

  • 关于编码那些事儿

    1. 字符串的编码形式 字符串的编码最一开始是ascii,使用8位二进制表示,因为英文就是编码的全部。后来其他国家...

  • 字符编码那些事儿

    每个文本编辑器都有默认的编码方式(比如 UTF-8 编码),当我们保存文档的时候,可以选择编码方式,如果没有特意选...

  • 字符编码那些事儿

    一直被字符的编码搞得头晕脑胀,经常出现乱码却又无可奈何,最近看到两篇讲字符编码的文章,这才有点头绪,于是决定把它写...

  • URL编码与解码那些事儿

    打印结果是:

  • iOS 音频编码之录音转MP3

    继续说说录音的那些事儿。使用AVAudioRecorder实现录音功能时,API里有很多的编码格式可供选择,其中P...

  • 编码的那点事儿

    什么是编码? 对于普通人来说,编码总是与一些秘密的东西相关联(加密与解密);对于程序员们来说,编码大多数是指一种用...

  • 《汽车销售那些事儿》目录

    汽车销售那些事儿21汽车销售那些事儿20汽车销售那些事儿19汽车销售那些事儿18汽车销售那些事儿17汽车销售那些事...

  • 编码篇-开发中关于数字的那些事儿

    前言 在日常的开发中我们随时都会跟数字打着交道,对数字的处理也是很平常的事,本文仅对常用的数字操作一个小结,当一个...

网友评论

    本文标题:编码的那些事儿

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