资讯专栏INFORMATION COLUMN

字符串编码的那些事

HtmlCssJs / 3068人阅读

摘要:由于编码只编码英文字符,如果要使用汉字则要使用一种新的编码编码,而编码汉字仅仅一个字节存储的整数是不够的,所以编码汉字至少需要两个字节。

字符串编码常见的有ASCII码,Unciode编码和UTF-8编码等,那么这些字符串编码他们的作用是什么?他们之间又有何联系?下面让本人来由浅入深来讲解这些编码。

由ASCII码说起

我们知道,计算机只能存储二进制,不能存储字符,如果要存储字符,必须将字符转化为二进制,计算机中定义一个字节为8位,所以一个字节能存的最大整数为255,如果要表示更大的整数,则必须要更大的字节,而ASCII码则是将大小写英文字母、数字和一些符号转化为整数的一种编码,比如整数A的ASCII编码是65,小写a的ASCII编码则是97,ASCII编码一共有127个字符。

由于ASCII编码只编码英文字符,如果要使用汉字则要使用一种新的编码GB2312编码,而编码汉字仅仅一个字节存储的整数是不够的,所以编码汉字至少需要两个字节。

但是如果我们要编码日文或者韩文呢?你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,如果只用一种特定的编码,显示出来会有乱码。

解决之道

解决方法就是用一种特殊的编码“Unicode编码”,Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

新的问题产生了

既然Unicode编码将所有语言都统一到一套编码里,那么是不是每种情况都用Unicode编码就行了呢?答案是否定的,那么为什么不在所有情况下都用Unicode编码呢?下面我来举个例子:
首先,根据Unicode标准,一般用两个字节来表示一个字符,某些生僻字会用四个字符来表示。

假设字符“A”,它在ASCII编码条件下二进制为01000001(十进制的65);
而字符A在Unciode编码条件下二进制为00000000 01000001(根据标准Unicode需要两个字节表示,不足位补0);

由上面例子可知,字符A的Unicode编码比ASCII编码多占了一个字节,所以在文本全是英文的环境下,Unicode编码比ASCII编码多一倍存储空间,这是十分不划算的。那么有没有一种既能处理乱码问题又能节约空间的编码呢?当然有,下面我们来介绍一种新的编码UTF-8编码。

UTF-8编码与Unicode编码

UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间,UTF-8编码将英文字符编码成一个字节,所以使用UTF-8编码能很好的兼容古老的用ASCII编码的文本文件。
既然弄清楚了UTF-8编码、Unicode编码的区别和联系,下面我来介绍下这三个编码的应用场景:

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

比如,在服务器生成网页传给客户端的过程中,服务器会把动态生成的Unicode内容转换成UTF-8编码传给客户端,所以你在客户端网页源码上会看到网页是由UTF-8编码的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69503.html

相关文章

  • 字符编码那些

    摘要:字符编码的那些事前言之前看到中对扩展了不少新特性,字符串操作更加友好,比如,,。其中涉及到不少字符编码的知识,为了更好理解这些新特性,本文对字符编码相关知识做一个较全面的梳理和总结。 字符编码的那些事 前言 之前看到ES6中对String扩展了不少新特性,字符串操作更加友好,比如u{1f914},codePointAt(),String.fromCodePoint()。其中涉及到不少字...

    shadajin 评论0 收藏0
  • 字符编码那些

    摘要:字符编码的那些事前言之前看到中对扩展了不少新特性,字符串操作更加友好,比如,,。其中涉及到不少字符编码的知识,为了更好理解这些新特性,本文对字符编码相关知识做一个较全面的梳理和总结。 字符编码的那些事 前言 之前看到ES6中对String扩展了不少新特性,字符串操作更加友好,比如u{1f914},codePointAt(),String.fromCodePoint()。其中涉及到不少字...

    kviccn 评论0 收藏0
  • cookie和localStorage那些

    摘要:它的大小限制为左右,是网景公司的前雇员在年月的发明。字符串转义通过来设置的有效期。和的用法和属性允许在浏览器中存储对的数据。用于临时保存同一窗口或标签页的数据,在关闭窗口或标签页之后将会删除这些数据。是浏览器关闭后就立即清除。 一、localStorage、cookie、sessionStorage的区别与练习 showImg(https://segmentfault.com/img/...

    Jeffrrey 评论0 收藏0
  • form表单file文件上传那些

    摘要:客户端直接访问用户计算机的文件以前在表单添加了字段是为給开发提供安全的方式以便在客户端更好访问用户的文件字段的基础上加了一些直接访问文件信息的接口集合与类型读取文件的数据集合本地文件的名称文件的字节大小字符文件的类型文件上次修改的时间实现 file API 客户端直接访问用户计算机的文件,2000以前,在表单添加了字段. file API是为給web开发提供安全的方式,以便...

    GeekGhc 评论0 收藏0
  • form表单file文件上传那些

    摘要:客户端直接访问用户计算机的文件以前在表单添加了字段是为給开发提供安全的方式以便在客户端更好访问用户的文件字段的基础上加了一些直接访问文件信息的接口集合与类型读取文件的数据集合本地文件的名称文件的字节大小字符文件的类型文件上次修改的时间实现 file API 客户端直接访问用户计算机的文件,2000以前,在表单添加了字段. file API是为給web开发提供安全的方式,以便...

    LinkedME2016 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<