浅谈unicode字符集及编码方式
ASCII编码(美国信息交换标准代码)
相信大部分同学学习c语言第一个接触的就是ASCII编码,ASCII码一个字符用一个字节表示,即8位。
但即便是有8位,系统对ASCII码的实际处理是低7位,代表127个字符(0x00~0x7F),忽略高位(在ASCII码中作奇偶校验位(防止数据传输中出错)),这是因为最初的计算机诞生和发展是在美国,而英文字母只有26个,加上阿拉伯数字和标点符号等字符全部编码也仅有127个,这对处理英文文档来说确实是个不错的方法,可是随着计算机的普及,世界各地的语言又不尽相同,于是便出现了后来的Unicode字符集及其各种编码方式。
Unicode字符集
Unicode是一种全宇宙通用字符集,是世界各国合作开发的一种语言,包含了世界上绝大部分语言的字符编码,显然中文的编码也包括在内。
Unicode计划使用了17个平面,一共有17*65536=1114112个码位。在Unicode 5.0.0版本中,已定义的码位只有238605个,分布在平面0、平面1、平面2、平面14、平面15、平面16。其中平面15和平面16上只是定义了两个各占65534个码位的专用区(Private Use Area)。所谓专用区,就是保留给大家放自定义字符的区域,可以简写为PUA。
程序员对 Unicode 这个名字发自内心的恐惧和敬畏。我们都知道在我们的软件中应该 “支持 Unicode”。 但 Unicode 很深奥,它有上千页的 Unicode 标准 ,还有几十页的补充附录、报告和,简直太吓人了。即使 Unicode 诞生 30 多年后,程序员们还觉得它很神秘。 – Nathan Reed
Unicode为每一个字符映射了一个特定的数值(二进制数),无论在任何平台或任何软件上,也无论哪一种语言,都有与之对应的编码。
Unicode迄今为止,仍然在不断的更新版本,加入更多的字符。尽管人们对世界上几乎所有语言的所有字符都进行了编码,但是Unicode仍然拥有巨大的空间等待新的字符加入。
Unicode只是一组字符设定或者说是从数字和字符之间的逻辑映射的概念编码,但是它并没有指定代码点如何在计算机上存储。正因如此,于是诞生了不同的编码方式。
编码方式种类
谈到编码方式,相信大家都不陌生,最常见的UTF编码,GBK(中国地区)编码等。
UTF编码
# Unicode的实现方式
UTF-8 使用一至四个字节为每个字符编码
UTF-16 使用二或四个字节为每个字符编码
UTF-32 使用四个字节为每个字符编码
它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部分修改后,便可继续使用。
UTF-8兼容ASCII,意味着在对英文编码是仅仅使用1个字节,重音文字、希腊字母或西里尔字母等使用2字节,中文编码使用3个字节,辅助平面字符则使用4字节,即采用可变字节长度存储方式。
GBK编码(国标)
GBK全称《汉字内码扩展规范》,GBK编码是GB2312编码的超集,向下兼容GB2312,同时向上支持ISO 10646.1国际标准。GBK使用了双字节编码方案,共收录了21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字。(笔者认为GBK与GB2312可不做区分,GB2312在软件中更为常见,中国大陆windows系统采用GBK编码)同样GBK编码也兼容了ASCII编码方案。
小tips:文本文档编码的存储所指均为字符,区分编程语言中其他数据类型占用字节大小
细心的小伙伴可能已经发现了,如今我们经常遇到的后缀名为.csv的文件也是文本文件的一种,当我们用正确的编码方式通过记事本或其他笔记软件打开时,每列数据之间是靠英文“,”隔开的。下面也附上几款好用的笔记软件,喜欢的小伙伴可以下载使用哦!
结语:计算机编程是一门实践性比较强的专业,只要动手,就会有不断发现,经验也越来越丰富。
Typora和Notepad++:链接:https://pan.baidu.com/s/1ADZqv_l8GoDsmYvoh057jQ
提取码:wig7
浅谈unicode字符集及编码方式相关推荐
- 浅谈 JavaScript 编程语言的编码规范
转自:http://www.ibm.com/developerworks/cn/web/1008_wangdd_jscodingrule/?ca=drs-tp4608 developerWorks 中 ...
- 浅谈unicode编码
要想弄清楚char类型,就必须了解unicode编码机制. 在unicode出现之前,已经有了很多不同的标准,比如美国的ASCⅡ,西欧的ISO8859-1,中国的GB18030等.但是没有一个统一的编 ...
- python安全编码问题_浅谈Python中的编码问题
对于Python的初学者来说,编码问题相当令人头疼.本文就根据我在学习过程中遇到的问题简单谈一下Python中的编码.首先简单介绍一下几种常见的编码. 一.几种常见的字符编码 ASCII码 ASCII ...
- 浅谈 JavaScript 编程语言的编码规范--转载
原文:http://www.ibm.com/developerworks/cn/web/1008_wangdd_jscodingrule/ 对于熟悉 C/C++ 或 Java 语言的工程师来说,Jav ...
- 浅谈uf8mb4字符集
要在 Mysql 中保存 4 字节长度的 UTF-8 字符,需要使用 utf8mb4 字符集(mb4就是most bytes 4的意思,专门用来兼容四字节的unicode),但只有 5.5.3 版本以 ...
- 浅谈Python中的编码规则
注:本人用Python3.4作为学习版本,以下学习心得只适用于Python3.4. 之前拜读了金角大王Alex关于编码的解答,收获颇多.特此致谢,以下仅谈一谈作为一个初学者,对编码的理解. 我所了解的 ...
- unicode字符集与编码
字符编码 个人理解 一个字符需要保存到计算机中,计算机只能识别0.1.这就需要一个规则来表述0.1数据与字符之间的关系. ASCII码 表述 1个字节 0.1数据与字符之间的关系. 非ASCII码 英 ...
- 正确理解UNICODE UTF-8等编码方式
[color=darkred]转载出处:[/color][url]http://blog.csdn.net/polarman/archive/2007/04/30/1593159.aspx[/url] ...
- 浅谈外部接口调用httpClient原生方式进一步使用与各个涉及类含义及作用
简单了解调用用外部接口原生HttpURLConnection与CloseableHttpClient方式 前言 原生HttpClient的详细使用案例 步骤 新建HttpURLConnection 连 ...
- ASCII+Unicode+UTF8(字符编码方式-字节) Base64(字节编码方式-64字符)
Base64 编码是一种可以把二进制文件编码成文本的编码规则.在很多地方地方都有用到,比如我们可以把图像转成 Base64 编码,然后内联到 HTML 或者 CSS 中. Base64 编码用一些很常 ...
最新文章
- 如何学习开源系统有感(一)
- 装完黑苹果怎么装windows_BlackArch(黑Arch)、怎么装?
- 【译】《Understanding ECMAScript6》- 第八章-Module
- include element into ABAP word document
- 配置mysql 问题解决
- SQL2K数据库开发二十一之索引操作创建索引
- java.io.FileNotFoundException: ...\ibs\library-1.0.17.jar (系统找不到指定的文件。)
- 将对象序列化和反序列化
- Visual Studio Code 配合 Node.js 轻松实现JS断点调试
- PCB 周期计算采用 SQL 函数调用.net Dll 标量函数 实现
- FastDFS原理系列文章
- OV7725摄像头软件实现简单的二值化处理
- 51单片机计算机加原理图,AT89C51单片机的基本结构和工作原理
- 饿了么4年 + 阿里2年:研发路上的一些总结与思考
- MDUKEY超级节点配置及指南(简)
- 从屌丝到高手,三道Python编程题,九种解题算法,看看你属于哪一类
- UE4之添加开场动画
- 【python】批量获取企业公司的统一社会代码
- unix、window、linux、mac介绍
- SAP Enhancement 分类
热门文章
- java语言的特点_Java语言有什么特点?
- c语言读取三菱plc数据,三菱plc怎么读取程序_电脑读取三菱PLC数据简单方法
- FPGA驱动USB协议芯片的测试
- acwing蓝桥杯刷题
- imagej macro language tutorial(ImageJ 宏语言教程)
- 回归预测 | MATLAB实现LSSVM(最小二乘支持向量机)多输入单输出
- 【02】 PC端网页布局之CSS3-pink老师-2022/03
- node jade模板
- java根据距离算经纬度_java 根据两点经纬度来算距离
- 专利挖掘和撰写(京东技术资质申请和创造专利挖掘)