美文网首页
简单聊一下编码

简单聊一下编码

作者: Minato666 | 来源:发表于2018-12-14 07:12 被阅读0次

编码问题在java编程的时候经常能够碰到,因为java是跨平台的语言,在不同平台的编码之间切换较多。那么为什么要编码呢?有两个原因:

  • 在计算机中存储信息的最小单元是1个字节,即8个bit,所以能表示的字符范围是0-255个。
  • 人类要表示的符号太多,无法用1个字节来完全表示
    要解决这个矛盾必须要有一个新的数据接口char, 而从char到byte必须编码。

我们编写代码的过程中一般经常接触到三种编码:

  • ASCII码:学过计算机的人都知道ASCII码,总共128个,用一个字节的低7位表示,0-31是控制字符如换行、回车、删除等,32-126是打印字符,可以通过键盘输入并且能够显示出来。
  • GBK:中文的常见编码,总共有23940个码位,它能表示21003个汉字,和GB2312兼容。
  • UTF-8:这个应该是最常见的编码,该编码每个编码区域有不同的字码长度。不同类型的字符可以由1-6个字节组成。编码规则如下:
    • 如果是一个字节,最高位(第8位)为0,则表示这是一个ASCII字符,可见所有的ASCII编码已经是UTF-8了。
    • 如果是1个字节,以11开头,则连续的1的个数暗示这个字符的字节数,例如:110xxxxx代表他是双字节UTF-8字符的首字节。
    • 如果是1个字节,以10开始,表示他不是首字节,则需要向前查找才能找到当前字符的首字节。
      UTF-8编码如下图:


      UTF-8.png

那我们经常遇到的乱码是什么情况呢?可以看下图:


image.png

系统中存储的事GBK编码的byte数据,对其使用ISO-8891-1解码规范解码就会出现一串看不懂的字符串,所以当编码和解码的规范不一致的时候就会出现这种乱码的情况。

相关文章

  • 简单聊一下编码

    编码问题在java编程的时候经常能够碰到,因为java是跨平台的语言,在不同平台的编码之间切换较多。那么为什么要编...

  • iOS底层系列:KVC

    前言 今天我们简单聊一下KVC,键值编码。平时我们给属性赋值或者取值都是使用点语法,调用属性的set或者get方法...

  • VideoToolBox 编码H.264

    VideoToolBox 编码H.264 使用VideoToolBox硬编码获取H264 简单介绍一下 H264,...

  • 简单聊一下说唱

    自从去年夏天爱奇艺制作了一款节目《中国有嘻哈》后,小众音乐系Hip-Hop开始被大众所熟知。 第一次看这综艺,被里...

  • 学习能力|编码记忆

    #高效学习法 2020.12.10 有朋友对于【编码记忆】这个学习方法有兴趣… 我简单介绍一下——编码记忆,有5大...

  • 聊一聊编码与乱码

    认识几种编码方式ASCII计算机发明之后需要使用0和1来表示字符,于是美国人在50年代发明了 ASCII (美国标...

  • iOS-NSString strong copy mutable

    聊一聊NSString的strong copy mutableCopy。 简单概括一下深拷贝和浅拷贝。 浅拷贝: ...

  • 针对Jmeter编码问题简单普及一下字符编码知识

    对于Jmerter中需要使用中文字符时,我们一般用UTF-8编码,而且对于CSV Data Set Config的...

  • 简单的聊一下闭包

    js中的闭包 闭包是学习js中永远也绕不过去的一个坎,那么,今天我们就去一段简单的代码开始聊一聊闭包 什么是闭包 ...

  • 简单聊一下js闭包

    js闭包,阮老师说:‘闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函...

网友评论

      本文标题:简单聊一下编码

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