常用编码格式介绍_数据库编码格式

常用编码格式介绍_数据库编码格式编程过程中经常会遇到各类字符的编码方式,经常会混淆,在此总结下常用的编码方式以及其原理。Ascii:因为对于计算机来说只能识别0、1这两种字符(0表示低电平,1表示高电平),所有的数据都是通过二进

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

编程过程中经常会遇到各类字符的编码方式,经常会混淆,在此总结下常用的编码方式以及其原理。

Ascii

  因为对于计算机来说只能识别01这两种字符(0表示低电平,1表示高电平),所有的数据都是通过二进制来表示,对于其他的比如说34sz#等字符用二进制表示就需要一个约定的规范,这就是ascii的由来。

  Ascii码表是用1个字节来表示128种字符(一个字节8位,可以组成256种字符,首位默认为0,所以ASCII最多就128个字符,当首位为1的时候我们后面再讨论),其中0-31127表示控制字符,他们是不可见字符。

  32-126是可见字符,48-57表示0-965-9026个大写英文字母,97-12226个小写英文字母。

 

GBK:

  现在英文和数字都有了,但是我们中国汉字怎么表示呢?此时GBK应运而生,上面我们得知ASCII首位为0,假如把它改成1,就表示中文。GBK2个字节来表示,第一个字节的最高位是0则表示字母和数字,假如是1则表示中文。

 

Unicode

  Unicode则是收录了世界上所有的语言, 但是在运用过程种会出现很多问题,比如一个3个字节的字符,如何区分他是1unicode还是3asicii,还有假如使用unicode,英文字母高位都会设置成0,这就造成了很大的浪费。因此UTF-8UTF-16UTF-32就出现来解决这些问题,主要讲当前互联网上常用的UTF-8

UTF-8

  UTF-8的规则很简单就两条:

  1、 对于单字节的字符,最高位为0,其实跟ascii表示一致

  2、 对于n个字节的字符,第一个字节的最高位为n1,第n+1设为0,后面每个字节的前两位都为10,剩下的用字符对应的unicode来表示,如下图

  Unicode符号范围 | UTF-8编码方式
  (十六进制) | (二进制)
  ——————–+———————————————
  0000 0000-0000 007F | 0xxxxxxx
  0000 0080-0000 07FF | 110xxxxx 10xxxxxx
  0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
  0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

 

BCD

  BCD编码主要用于数字0-9的压缩,因为0-9二进制表示为0000 00000000 1001,它们的前4位都是0,把他们合并就生成一个新的字符。

比如2个字符’1’,’9’他们对应的Ascii0x310x39,因此表示形式则为2个字节0x31 0x39

假如用BCD格式来表示则将其数字对应的二进制前4位去掉,然后合并,即将00000001000010014位去掉得到0001 1001,得到新的1个字节0x19,这样看起来就跟十进制一样,这就是BCD压缩码的原理。

 

Base64编码:

  Base64编码的作用是将ascii里面的不可见字符变成可见字符来传输。Base64编码的最小使用单元是4个字节,每个字节使用6位,假如不足6的整数倍,则后面补0,剩下的字符补=,因为计算机存储字节是8位,所以计算字符值时在前面补20

 可能说的有些绕,看下一张图就了解了

(借用网上的一张图片 http://www.cnblogs.com/caoyc/p/5794720.html

以A为例补位之后第一个字节为010000,前面补0得到00010000,对应10进制为16,对照字符表得到Q,第二个字节一样,也是Q,然后base64编码最小是4个字节,后面两个字节补=,最终得到QQ==

 

 常用编码格式介绍_数据库编码格式

下面是一个Base64字符集,它包含大写字母、小写字母和数字,以及“+”和“/”符号。

常用编码格式介绍_数据库编码格式

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166851.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • h5 实现图片上传 案例

    h5 实现图片上传 案例如何在 h5 中实现图片上传 单图片上传 先写一个按钮 通过点击按钮触发文件上传的 onclick 事件 divclass btn onclick takePhone 请点击进行拍照 inputtype file name file id upload capture camera onchange uploadImg accept image value inputtype file name file id upload capture camera onchange uploadImg accept image divclass btn onclick takePhone

    2025年6月25日
    4
  • vim复制粘贴命令

    vim复制粘贴命令1.选定文本块。使用v进入可视模式,移动光标键选定内容。 2.复制的命令是y,即yank(提起),常用的命令如下:   y   在使用v模式选定了某一块的时候,复制选定块到缓冲区用;   yy  复制整行(nyy或者yny,复制n行,n为数字);   y^  复制当前到行头的内容;   y$  复制当前到行尾的内容;   yw  复制一个word(ny…

    2022年9月23日
    3
  • win10 命令行进入指定目录方法[通俗易懂]

    win10 命令行进入指定目录方法[通俗易懂]原文地址:https://blog.csdn.net/weixin_29207913/article/details/106616959方法一在资源管理器”地址“前面输入cmd。如下图:确认后cmd就会进入相关目录,进行其他cmd操作。如下图:方法二在资源管理器中,按住shift,同时右键空白地方,将会出现分别点击红框中选项,能分别使用PowerShell和WSL进入对应目录…

    2022年10月16日
    3
  • TDD-LTE与FDD-LTE区别之频段分配[通俗易懂]

    TDD-LTE与FDD-LTE区别之频段分配[通俗易懂]之前转载了一个惯有TDD与FDD异同点比较的博客,看了之后觉得还是根据异同点进行分类整理一下,这样应该能够更好的有利于大家的记忆与理解。所以这一节我们就先来整理一下这两者的频段与双工方式的区别。TDD与FDD分别是时分双工和频分双工的英文简写;FDD系统在发送和接收数据上使用不同的频率,在上行和下行频率之间有双工间隔,现在常见的2G,3G制式的网络中,GSM,CDMA,WCDM

    2022年6月3日
    42
  • 配置swagger

    配置swagger配置swagger

    2022年4月25日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号