编码和字符、字节之间的故事
发展:ASCII(英文)–ANSI(GB2312汉字标准,两个字节)–UNICODE(国际化)
使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做 “字符集”。规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。 我们实际上没有必要去深究每一种编码具体把某一个字符编码成了哪几个字节,我们只需要知道“编码”的概念就是把“字符”转化成“字节”就可以了。
理解编码的关键,是要把字符的概念和字节的概念理解准确。这两个概念容易混淆,我们在此做一下区分:
种类 | 概念描述 | 举例 |
---|---|---|
字符 | 人们使用的记号,抽象意义上的一个符号。 | ‘1’, ‘中’, ‘a’, ‘$’, ‘¥’, …… |
字节 | 计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间。 | 0x01, 0x45, 0xFA, …… |
ANSI字符串 | 在内存中,如果“字符”是以 ANSI 编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI 字符串或者多字节字符串。 | “中文123”(占7字节) |
UNICODE字符串 | 在内存中,如果“字符”是以在 UNICODE 中的序号存在的,那么我们称这种字符串为UNICODE 字符串或者宽字节字符串。 | L"中文123"(占10字节) |
由于不同 ANSI 编码所规定的标准是不相同的,因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种编码规则,才能够知道它包含了哪些“字符”。而对于 UNICODE 字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的。
GBK和gb2312: 总体说来,GBK包括所有的汉字,包括简体和繁体。而gb2312则只包括简体汉字。都是采用英文一字节保存,中文两个字节
UTF-8: 英文1个字节,中文3个字节,不仅考虑了编码,还考虑了存储
在 ASCII 阶段, 单字节字符串使用一个字节存放一个字符(SBCS)
在使用 ANSI 编码支持多种语言阶段,每个字符使用一个字节或多个字节来表示(MBCS),每个汉字占2个字节,每个英文和数字字符占1个字节
在 UNICODE 被采用之后,计算机存放字符串时,改为存放每个字符在 UNICODE 字符集中的序号。目前计算机一般使用 2 个字节(16 位)来存放一个序号(DBCS)
UNICODE 字符集包含了各种语言中使用到的所有“字符”。用来给 UNICODE 字符集编码的标准有很多种,比如:UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig 等。单纯的unicode虽然统一了全世界字符的二进制编码,但没有规定如何存储。
编码和字符、字节之间的故事相关推荐
- ansi编码_Java 字符编码
点击上方蓝字关注我们! 作者介绍 王云静,Java 开发工程师,2018 年 7 月加入去哪儿网,目前在目的地 - 呼叫中心.曾获得过 ACM 亚洲区域赛铜牌. ----- 基本概念 字符集 字符(C ...
- 【Java基础】Java中的char是否可以存储一个中文字符之理解字符字节以及编码集
Java中的一个char采用的是Unicode编码集,占用两个字节,而一个中文字符也是两个字节,因此Java中的char是可以表示一个中文字符的. 但是在C/C++中由于采用的字符编码集是ASCII, ...
- J2EE 字符 字节 编码知识概念
java中的字符,字节和编码 分类: Java2008-01-02 11:501053人阅读评论(0)收藏举报 javastring语言windows数据库服务器存储 目录(?)[+] 编码问题的由来 ...
- 字节、编码、字符、字符集 专题
1.2 字符,字节,字符串 理解编码的关键,是要把字符的概念和字节的概念理解准确.这两个概念容易混淆,我们在此做一下区分: 概念描述 举例 字符 人们使用的记号,抽象意义上的一个符号. '1', '中 ...
- mysql gbk编码 字节数_MySql中UTF8和GBK编码中文字符长度问题
2.设计函数,输入为一个字符串,里边包含中文.英文.数字等字符,编码为GBK.中文字符的编码规则假定为:双字节组成,高字节大于0x80,低字节任意. a) 用常用语言(c/c++/php/ja ...
- gb2312 java编码几个字节_彻底搞懂乱码——字符,字节和编码
级别:中级 摘要:本文介绍了字符与编码的发展过程,相关概念的正确理解.举例说明了一些实际应用中,编码的实现方法.然后,本文讲述了通常对字符与编码的几种误解,由于这些误解而导致乱码产生的原因,以及消除乱 ...
- 【转】刨根究底字符编码之十一——UTF-8编码方式与字节序标记BOM
一.UTF-8编码方式 1. 接下来将分别介绍Unicode字符集的三种编码方式:UTF-8.UTF-16.UTF-32.这里先介绍应用最为广泛的UTF-8. 为满足基于ASCII.面向字节的字符处理 ...
- Unicode编码 ASCII码 utf-8编码 中英文字符所占字节
ASCII码 英文字符(字符和符号)占一个字节,中文字符(汉字和符号)占两个字节 utf-8编码 英文字符(字符和符号)占一个字节,中文字符(汉字和符号)占三个字节 Unicode编码 英文字符(字符 ...
- 字符字节Base64编码
上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下字符字节 Base64码编说明 Base64码编要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24 ...
最新文章
- 一种清除windows通知区域“僵尸”图标的方案——问题分析
- 国外论坛BCH关注度暴涨
- 工厂模式(Factory)
- 斗拱展开面积表_144996_河南省仿古建筑工程计价综合单价2009
- RTMPDump源代码分析 0: 主要函数调用分析
- VC2010 编译 Media Player Classic - Home Cinema (mpc-hc)
- 百度智能云人脸库的创建与使用
- EXPLOITING CVE-2016-2060 ON QUALCOMM DEVICES
- 问:全局变量是否可以定义在被多个.c文件包含的头文件.h中?
- 25岁,想转行到 IT,应怎样入门?
- 【无标题】Java画板简易实现
- 大数据惊人:凌晨4点的中国人都在做什么?
- 图像,log处理的一点经验
- IMS:开发者选项Touch点显示
- SUS战队专访 | 关于赛题,能说的都在这里了
- oracle中bulk,Oracle——Bulk
- Spyder断点调试
- 胖客户端与瘦客户端概念与区别
- matlab二维数组实例(提取数据)
- 元宇宙Metaverse是什么?为什么这么火爆?