编码GBK和GB2312、Unicode、UTF-8
一、编码GBK和GB2312
随着计算机发展,各国已经不满足于单纯用ASCII码;
对于我们来说能在计算机中显示中文字符是至关重要的,所以我们还需要一张关于中文和数字对应的关系表;
一个字节8位二进制,只能最多表示256个字符,要处理中文显然一个字节是不够的;
所以我们需要采用两个字节来表示,而且还不能和ASCII编码冲突;
所以1980年中国制定了GB2312编码,国家简体中文字符集,兼容ASCII;
1995年制定了GBK编码,GB2312的扩展字符集,支持繁体字,兼容GB2312。
注:在GBK和GB2312中,一个中文字符占两个字节,16个二进制位,4个十六进制位。
如何兼容ASCII:
如何区别连在一起的2个字节是代表2个英文字母,还是一个中文汉字呢?
如果2个字节连在一起,且每个字节的第1位(也就是相当于128的那个2进制位)如果是1,就代表这是个中文,这个首位是128的字节被称为高字节。 也就是2个高字节连在一起,必然就是一个中文。
因为0-127已经表示了英文的绝大部分字符,128-255是ASCII的扩展表,表示的都是极特殊的字符,一般没什么用。
所以0-127位ASCII码,GB2312就直接拿来用了。
二、编码Unicode
全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里;
各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。
因此,1991年国际标准组织统一标准字符集,编码Unicode应运而生。
最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)
三、编码UTF-8
如果统一成Unicode编码,乱码问题从此消失了;
但是,Unicode编码最少用两个字节,ASCII码中英文是一个字节;
如果文本基本上全部是英文,用Unicode编码需要多一倍存储空间,存储和传输十分费劲。
1992年创建UTF-8编码,是一种针对Unicode的可变长度字符编码,又称万国码;
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节(每8位缩减),从而兼容所有编码,
英文字符1字节,欧洲字符2字节,中文字符3字节,只有很生僻的字符才会被编码成4-6个字节。
编码GBK和GB2312、Unicode、UTF-8的更多相关文章
- 常见编码GBK、GB2312、UTF-8、ISO-8859-1的区别
https://blog.csdn.net/shijing_0214/article/details/50908144 在项目开发中,会经常遇到不同的编码方式.不管什么编码,都是信息在计算机中的一种表 ...
- gbk和gb2312的区别
//GB2312是中国规定的汉字编码,也可以说是简体中文的字符集编码;GBK 是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名 //总体说来,GBK包括所有的汉字, ...
- 文字编码ASCII,GB2312,GBK,GB18030,UNICODE,UCS,UTF的解析
众所周知,一个文字从输入到显示到存储是有一个固定过程的,其过程为:输入码(根据输入法不同而不同)→机内码(根据语言环境不同而不同,不同的系统语言编码也不一样)→字型码(根据不同的字体而不同)→存储码( ...
- 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
- [转]各种编码ANSI、GB2312、GBK、GB18030、UNICODE以及UTF-8傻傻分不清!
计算机编程中的编码一直是让新手非常头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚,看一遍貌似懂了,但实际使用的时候又 ...
- 编码介绍(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
转载:http://blog.jobbole.com/30526/(前面内容)和http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf ...
- 编码的来源于格式简介ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE
编码一直是让新手头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚.但是编码又是那么重要,特别在网页这一块.如果你打出来 ...
- ASCII、Unicode、UTF-8、UTF-16、GBK、GB2312、ANSI等编码方式简析
ASCII.Unicode.UTF-8.UTF-16.GBK.GB2312.ANSI等编码方式简析 序言 从各种字节编码方法中,能看到那个计算机发展的洪荒时期的影子. ASCII ASCII码有标准A ...
- 编码格式简介:ASCII码、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM头
编码格式简介:ASCII码.ANSI.GBK.GB2312.GB18030和Unicode.UTF-8,BOM头 二进制: 只有0和1. 十进制.十六进制.八进制: 计算机其实挺笨的,它只认识0101 ...
随机推荐
- Eclipse如何导入第三方jar包
本文转自:http://blog.csdn.net/mazhaojuan/article/details/21403717 我们在用Eclipse开发程序的时候,经常要用到第三方jar包.引入jar ...
- Extjs4,form提交时emptyText传值问题
在Extjs4中,form提交时,文本框的emptyText会传到后台,比如 上图中的“请选择”这样的文本会作为值传到后台. 解决方法: form提交时配置 submitEmptyText: fal ...
- jQuery - 选中复选框则弹出提示框
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- SuperSocketClientEngine
https://github.com/kerryjiang/SuperSocket.ClientEngine TcpClientSession的用法 https://github.com/kerryj ...
- (转)dp动态规划分类详解
dp动态规划分类详解 转自:http://blog.csdn.NET/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间 ...
- B1270 [BeijingWc2008]雷涛的小猫 dp
这个题的原始方法谁都会,但是n^3会T.之后直接优化,特别简单,就是每次处理出来每层的最大值,而不用枚举.之前没这么做是因为觉得在同一棵树的时候没有下落,所以不能用这个方法.后来想明白了,在同一棵树上 ...
- DCloud-JS-MUI-JS:utils.js
ylbtech-DCloud-JS:utils.js 1. 导航返回返回顶部 1. var oldBack = mui.back; mui.back = function () { mui.back ...
- c++之——————各种变量
对我们程序员来讲,“变量”和“对象”是可以相互互换使用的.-------------开篇之词. 变量:提供一个具有名字的可供程序操作的存储空间.由类型说明符和其后紧跟的数个列表组成,其中变量名之间使用 ...
- C Looooops(扩展欧几里得+模线性方程)
http://poj.org/problem?id=2115 题意:给出A,B,C和k(k表示变量是在k位机下的无符号整数),判断循环次数,不能终止输出"FOREVER". 即转化 ...
- lowbit( )运算
--------开始-------- lowbit (n) 定义为非负整数n在二进制表示下“最低位的1及其后面所有的0构成的数值. 比如: n = 10 的二进制下为1010,则lowbit (n) ...