常用编码格式介绍_数据库编码格式
大家好,又见面了,我是你们的朋友全栈君。
编程过程中经常会遇到各类字符的编码方式,经常会混淆,在此总结下常用的编码方式以及其原理。
Ascii:
因为对于计算机来说只能识别0、1这两种字符(0表示低电平,1表示高电平),所有的数据都是通过二进制来表示,对于其他的比如说3、4、s、z、#等字符用二进制表示就需要一个约定的规范,这就是ascii的由来。
Ascii码表是用1个字节来表示128种字符(一个字节8位,可以组成256种字符,首位默认为0,所以ASCII最多就128个字符,当首位为1的时候我们后面再讨论),其中0-31和127表示控制字符,他们是不可见字符。
32-126是可见字符,48-57表示0-9,65-90为26个大写英文字母,97-122是26个小写英文字母。
GBK:
现在英文和数字都有了,但是我们中国汉字怎么表示呢?此时GBK应运而生,上面我们得知ASCII首位为0,假如把它改成1,就表示中文。GBK由2个字节来表示,第一个字节的最高位是0则表示字母和数字,假如是1则表示中文。
Unicode:
Unicode则是收录了世界上所有的语言, 但是在运用过程种会出现很多问题,比如一个3个字节的字符,如何区分他是1个unicode还是3个asicii,还有假如使用unicode,英文字母高位都会设置成0,这就造成了很大的浪费。因此UTF-8、UTF-16、UTF-32就出现来解决这些问题,主要讲当前互联网上常用的UTF-8
UTF-8:
UTF-8的规则很简单就两条:
1、 对于单字节的字符,最高位为0,其实跟ascii表示一致
2、 对于n个字节的字符,第一个字节的最高位为n个1,第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 0000到0000 1001,它们的前4位都是0,把他们合并就生成一个新的字符。
比如2个字符’1’,’9’,他们对应的Ascii为0x31和0x39,因此表示形式则为2个字节0x31 0x39
假如用BCD格式来表示则将其数字对应的二进制前4位去掉,然后合并,即将00000001和00001001前4位去掉得到0001 1001,得到新的1个字节0x19,这样看起来就跟十进制一样,这就是BCD压缩码的原理。
Base64编码:
Base64编码的作用是将ascii里面的不可见字符变成可见字符来传输。Base64编码的最小使用单元是4个字节,每个字节使用6位,假如不足6的整数倍,则后面补0,剩下的字符补=,因为计算机存储字节是8位,所以计算字符值时在前面补2个0。
可能说的有些绕,看下一张图就了解了
(借用网上的一张图片 http://www.cnblogs.com/caoyc/p/5794720.html)
以A为例补位之后第一个字节为010000,前面补0得到00010000,对应10进制为16,对照字符表得到Q,第二个字节一样,也是Q,然后base64编码最小是4个字节,后面两个字节补=,最终得到QQ==
下面是一个Base64字符集,它包含大写字母、小写字母和数字,以及“+”和“/”符号。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166851.html原文链接:https://javaforall.cn
相关文章
- 数据库-select查询语句
- 教你如何 汉化 PLSQL developer12 连接数据库
- Linux下安装PostgresSQL-10.1详解数据库
- 状态查看Oracle数据库实例DG状态指南(oracle查看dg)
- MySQL: 指定编码创建数据库(mysql创建库指定编码)
- Oracle 数据库查询的强大功能(oracle包含查询)
- 解决MySQL数据库字符编码问题:使用UTF8函数(mysqlutf8函数)
- 使用Redis查看所有数据库(redis查看所有db)
- Oracle数据库和客户端:完美的结合(oracle数据库和客户端)
- MySQL数据库编码修改指南(mysql修改数据库编码)
- Oracle数据库表编码格式简介(oracle表编码格式)
- MySQL数据库编码设置详解(mysql建数据库编码)
- 使用Oracle客户端的编码技巧:如何优化数据库管理(oracle客户端编码)
- Oracle轻松搞定,快速列出数据库(oracle列出数据库)
- MySQL数据库中创建表的编码格式选择技巧(mysql创建表编码格式)
- MySQL数据库访问:一窥实现之路(mysql 数据库访问)
- MySQL数据库:编码修改及其带来的影响(mysql数据库编码修改)
- 深入剖析Oracle数据库的核心技术及优势(对oracle的理解)
- mbg在oracle数据库上的应用实践(mbg oracle)
- 掌握MySQLSafe,安心管理数据库(mysql_safe作用)
- 编码Oracle 数据库修改字符集为GBK编码(oracle 修改gbk)
- Oracle数据库修改语言编码的操作方法(oracle修改语言编码)
- 解决Oracle数据库编码问题的方法(oracle中怎么改编码)
- Oracle数据库中的实体视图(oracle中实体视图)
- Oracle 数据库中文编码解决方案(oracle中中文编码)
- Oracle数据库如何实现UFT8编码(oracle uft8)
- 纯编码实现Access数据库的建立或压缩
- 数据库性能优化二:数据库表优化提升性能
- PHPutf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
- 如何恢复Mysql数据库的详细介绍