unicode

计算机的世界是二进制的世界,无论文字音频传输存储之时都要落实到二进制上。而起源于西方的计算机技术自然深根于他们的文化,于是最初的ascii码基本只是西方的文字编码集。随着计算机的普及,各个国家各个民族基本都为自己的文字创立了字符集。多而杂的规则为数据的传输交换带来巨大困难。是时候要统一字符集了。

unicode应运而生。unicode旨在为所有字符统一编码。

unicode的UCS2标准用两个字集,16位来表示字符,因此它的容量是216个。

uft-8

在大家都使用unicode的时候,英文字母和符号由原本ascii下的一个字节变成两个字节,这无疑是一种浪费。于是UTF(unicode transfer format)这种变长编码又出现了,它专门为传输而设计。unicode相当一个map,为每个字符赋一个编码。而utf则对这些编码再次编码,以便于传输存储。utf-8表示8位的编码格式,还有uft-16,utf-32。

unicode与uft-8之间的转换关系

unicode编码为utf-8时规则如下:

  • 对于0-127之间的编码,以一个字节表示,即其二进制编码。
  • 128及以上,如果编码后的uft-8是n个字节,则第一个字节的编码起始为连续的n个1和一个0,后续字节皆以10开头,剩余部分才是存放真实值的地方,这里说的n个1+0 和 10就像是来描述协议的暗号一样。
unicode 编码范围(binary) uft-8(binary)
0~0111 1111 0xxx xxxx
0000 1000 0000 ~ 0111 1111 1111 110x xxxx 10xx xxxx
0000 1000 0000 0000 ~ 0111 1111 1111 1111 1110 xxxx 10xx xxx 10xx xxxx

utf-8以八个字节为一个单位编码,其中字节符合 ^1{2,}0 规则的是开始字节,一个开始字节后面跟的随1-6个辅助字节,每个辅助字节以10开头,所以可以承载的信息是6位。那么我们可以轻易计算出utf-8各个变长编码组的容量范围:

  1. 一个n个字集编码的 utf-8 的有效位是 (8-n-1)+n*6,得出上限值M。
    2.用1的方式计算出 n-1 个字集编码表达的上限N。

所以n个utf-8字节编码表达的unicode值范围是,N+1~M。经计算:

utf-8 字节数(dec) 编码值范围(dec)
1 0-127
2 128-2047
3 2048-65535
4 65536-2097151

举一个例子来描述这种转换规则:

汉字“中”的unicode编码十六进制数为:4e2d,十进制为:20013, 二进制为:0100 1110 0010 1101,区间在2048-65535,所以是三个字节。
所以将其二进制填充进 1110 xxxx 10xx xxx 10xx xxxx的x中,得出的结果是1110 0100,1011 1000,1010 1101。得出utf-8十六进制为 e4 b8 ad。

javascript中的unicode和utf-8

js中escape是对字符进行unicode编码,而encodeURI和encodeURIComponent是utf-8编码。

转载于:https://www.cnblogs.com/magma/p/5769929.html

unicode 与 utf-8相关推荐

  1. ASCII Unicode GBK UTF的联系

    快下班时,爱问问题的小朋友Nico又问了一个问题: "sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思." 并不是所有简单的问题都很 ...

  2. Unicode、UTF-8 和 ISO8859-1到底有什么区别(转载)

    本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 c ...

  3. 字符集ASCII、GBK、UNICODE、UTF在储存字符时的区别

    ASCII编码(American Standard Code for Information Interchange,美国信息互换标准代码),使用127个8进制字节表示英文和半角字符. GBK (Gu ...

  4. Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码

    将字符转换为二进制码的过程,我们称为编码,将二进制码转换为字符的过程,我们称为解码. 编码和解码时所采用的规则,我们称为字符集 常见的字符集: ASCII - 美国人编码,使用7位来对美国常用的字符进 ...

  5. unicode、utf区别

    字符集 首先,我们要明确2个概念,字符集和字符编码. 字符集:ASCII.GB2312.GBK.Unicode 字符编码:UTF-8.UTF-16.UTF-32 由于ASCII.GB2312.GBK不 ...

  6. 简单介绍Unicode和utf编码

    Unicode是一个字符集,码点范围为U+0000~U+10FFFF,共有1+2^20的取值空间,可以容纳超过100万个字符,至少需要21Bit(位)编码空间. 码点的意思是,这个字符集内的字符按序编 ...

  7. ansi、unicode、UCS、UTF等概念(转)

    一.ansi定义 不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准.这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码.在 ...

  8. core java 9 代码_Java Core 学习笔记——3.char/Unicode/代码点/代码单元

    通用字符集(UCS) UCS是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所制定的标准字符集. UCS包括了其他所有的字符集(包含了已知语言的所以字符). ISO/IEC 1 ...

  9. unicode,ansi,utf-8,unicode big endian编码的区别

    为什么80%的码农都做不了架构师?>>>    随便说说字符集和编码 快下班时,爱问问题的小朋友Nico又问了一个问题: "sqlserver里面有char和nchar,那 ...

  10. [转]各种编码ANSI、GB2312、GBK、GB18030、UNICODE以及UTF-8傻傻分不清!

    计算机编程中的编码一直是让新手非常头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚,看一遍貌似懂了,但实际使用的时候又 ...

最新文章

  1. Linux的僵尸进程及其解决方法(转)
  2. 关于 OutOfMemoryError 的总结与解决方法
  3. Struts 2框架创建的第一个项目
  4. word文档保存发生错误_文档还是没有发生
  5. 解决部分控件,自动获取焦点的情况
  6. linux内核disabled,Linux内核关闭IPv6协议的方式
  7. 【agc006f】Blackout(神仙题)
  8. 第三十 访问财富进退自如 —Spring交易管理
  9. 信息化基础建设 总体结构
  10. matlab 声明gpu,使用MATLAB轻松享受GPU的强大功能
  11. 网页导出pdf不完整_又一种pdf文献全文一键免费翻译的方法
  12. PS图片素描化(画)
  13. 47道计算机网络面试题,个人珍藏的80道多线程并发面试题(11-20答案解析)
  14. BLE中GATT理解
  15. c#读取Excel表数据
  16. BSP和MapReduce有什么区别?
  17. JDK17的下载安装与配置(详细教程)
  18. PyCharm使用pip命令或从settings处下载包失败的解决方案
  19. 出现/usr/lib64/erlang/erts-10.3/bin/beam.smp: error while loading shared libraries: libtinfo.so.5解决方法
  20. Java生成二维码 基于Google-Zxing

热门文章

  1. Taro+react开发(60) 第三方icon使用
  2. [vue] 第一次加载页面时会触发哪几个钩子?
  3. [css] 用CSS绘制一个三角形
  4. 工作316:uni-修改其他页面的时间逻辑
  5. [js] 微信的JSSDK都有哪些内容?如何接入?
  6. [vue] 从0到1自己构架一个vue项目,说说有哪些步骤、哪些重要插件、目录结构你会怎么组织
  7. 前端学习(2253)如何进行团队合作
  8. 前端学习(1436):vue特点
  9. 前端学习(1221):使用过滤器格式化日期
  10. 前端学习(1162):箭头函数面试题