几种编码格式介绍

news/2025/2/23 2:34:13/
1. ASCII码 
学过计算机的人都知道ASCII码,总共有128个,用一个字节的低7位表示,0~31是控制字符如换行回车删除等;32~126是打印字符,可以通过键盘输入并且能够显示出来。 
2. ISO-8859-1 

128个字符显然是不够用的,于是ISO组织在ASCII码基础上又制定了一些列标准用来扩展ASCII编码,它们是ISO-8859-1~ISO-8859-15,其中ISO-8859-1涵盖了大多数西欧语言字符,所有应用的最广泛。ISO-8859-1仍然是单字节编码,它总共能表示256个字符。

3. GB2312 
它的全称是《信息交换用汉字编码字符集 基本集》,它是双字节编码,总的编码范围是A1-F7,其中从A1-A9是符号区,总共包含682个符号,从B0-F7是汉字区,包含6763个汉字。 
4. GBK 
全称叫《汉字内码扩展规范》,是国家技术监督局为windows95所制定的新的汉字内码规范,它的出现是为了扩展GB2312,加入更多的汉字,它的编码范围是8140~FEFE(去掉XX7F)总共有23940个码位,它能表示21003个汉字,它的编码是和GB2312兼容的,也就是说用GB2312编码的汉字可以用GBK来解码,并且不会有乱码。 
5. GB18030 
全称是《信息交换用汉字编码字符集》,是我国的强制标准,它可能是单字节、双字节或者四字节编码,它的编码与GB2312编码兼容,这个虽然是国家标准,但是实际应用系统中使用的并不广泛。 
6. UTF-16 
说到UTF必须要提到Unicode(Universal Code 统一码),ISO试图想创建一个全新的超语言字典,世界上所有的语言都可以通过这本字典来相互翻译。可想而知这个字典是多么的复杂,关于Unicode的详细规范可以参考相应文档。Unicode是Java和XML的基础,下面详细介绍Unicode在计算机中的存储形式。 
UTF-16具体定义了Unicode字符在计算机中存取方法。UTF-16用两个字节来表示Unicode转化格式,这个是定长的表示方法,不论什么字符都可以用两个字节表示,两个字节是16个bit,所以叫UTF-16。UTF-16表示字符非常方便,每两个字节表示一个字符,这个在字符串操作时就大大简化了操作,这也是Java以UTF-16作为内存的字符存储格式的一个很重要的原因。 
7. UTF-8 
UTF-16统一采用两个字节表示一个字符,虽然在表示上非常简单方便,但是也有其缺点,有很大一部分字符用一个字节就可以表示的现在要两个字节表示,存储空间放大了一倍,在现在的网络带宽还非常有限的今天,这样会增大网络传输的流量,而且也没必要。而UTF-8采用了一种变长技术,每个编码区域有不同的字码长度。不同类型的字符可以是由1~6个字节组成。

8. UTF-8有以下编码规则: 
如果一个字节,最高位(第8位)为0,表示这是一个ASCII字符(00 - 7F)。可见,所有ASCII编码已经是UTF-8了。  如果一个字节,以11开头,连续的1的个数暗示这个字符的字节数,例如:110xxxxx代表它是双字节UTF-8字符的首字节。  
如果一个字节,以10开始,表示它不是首字节,需要向前查找才能得到当前字符的首字节

几种编码格式的比较

        对中文字符后面四种编码格式都能处理,GB2312与GBK编码规则类似,但是GBK范围更大,它能处理所有汉字字符,所以GB2312与GBK比较应该选择GBK。UTF-16与UTF-8都是处理Unicode编码,它们的编码规则不太相同,相对来说UTF-16编码效率最高,字符到字节相互转换更简单,进行字符串操作也更好。它适合在本地磁盘和内存之间使用,可以进行字符和字节之间快速切换,如Java的内存编码就是采用UTF-16编码。但是它不适合在网络之间传输,因为网络传输容易损坏字节流,一旦字节流损坏将很难恢复,想比较而言UTF-8更适合网络传输,对ASCII字符采用单字节存储,另外单个字符损坏也不会影响后面其它字符,在编码效率上介于GBK和UTF-16之间,所以UTF-8在编码效率上和编码安全性上做了平衡,是理想的中文编码方式


http://www.ppmy.cn/news/154179.html

相关文章

CSS实现3D展开效果

CSS实现3D展开效果 不知道你们看没看看过游戏角色3D展开时的那种效果。或者当我们想要买东西的时候,当我们hover放置在这个商品时,会出现一个商品要弹出手机的效果。 先看效果 游戏角色3D展开,当我们鼠标hover至这个角色时,它就…

Elasticsearch:如何使用自定义的证书安装 Elastic Stack 8.x

在我之前的文章 “如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch”,我详细描述了如何在各个平台中安装 Elastic Stack 8.x。在其中的文章中,我们大多采用默认的证书来安装 Elasticsearch。在今天的文章中,我们用自己创…

ElasticSearch学习(一)

一、ElasticSearch的下载 下载地址https://www.elastic.co/downloads/elasticsearch 选择windows版本的下载 解压后运行bin下的elasticsearch.bat文件 访问http://localhost:9200/ 进行验证 出现下图即为启动成功 二、辅助管理工具Kibana5 下载地址:https://…

The `certs(%1$s)` contains the merchant‘s certificate serial number(%2$s) which is not allowed here.

php对接微信h5新版 V3支付遇到的第一个报错 意思是说证书序列号不正确 解决过程: 1、我得到的证书有apiclient_cert.pem,apiclient_key.pem,wpay.p12这三个文件 2、我下载了官网提供的sdk(下载地址 https://github.com/wechatpay-apiv3/wecha…

android 获取设备id 崩溃,获取Android设备ID时出错

我正在尝试在我的Android应用中检索我的adroid设备的设备ID。但是,在我的程序中添加以下行后,错误存在并且程序无法启动: String ts = Context.TELEPHONY_SERVICE; TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(ts); 从logcat开始,它说问题来自第…

黑苹果】宏基Acer Aspire A515-51G+i5-8250U+支持 MacOS 10.15.x、10.14.x 和 10.13.x EFI文件下载!

电脑配置 型号:Acer Aspire A515-51G CPU : 英特尔酷睿 i5-8250U (基 1.6GHz, 提升 3.6GHz, 合成负载稳定 2.4GHz, cinebench 1200pts) RAM : 4GB DDR4 未知焊接到主板上&#xff…

windows 日志事件 ID

应用程序组管理 4783 已创建基本的应用程序组。 4784 基本应用程序组已被更改。 4785 已将成员添加到基本应用程序组。 4786 已从基本应用程序组中删除一个成员。 4787 非成员已添加到基本应用程序组。 4788 非成员已从删除基本应用程序组。 4789 基本应用程序组已删除。 4791…

1N4148

参数 二极管 类型: 高频 小信号 电流 :正常正向电流 If:150mA ; 最大正向电流 Imax:500mA; 最大重复峰值电流 Ifs:450mA 电压 :最大重复峰值电压 Umax:100V; 最大连续反向电压 Urrm:75V; 最…