1、很久以前使用的是ASCII;只有一个字节,也就是2的8次方,可以表示256个不同状态,电脑最初起源于美国,够用了,刚开始只是使用了127位,后来后面的部分被他们用来表示一些横线字符之类的128-255的扩展字符集。

2、后来传入中国,中国汉字太多了,ASCII不够用,中国人就不承认扩展字符集了,而是使用组合的方式把大于127的两个编码字符连在一起也就是两个ASCII编码合起来表示一个汉字(GBK标准)。再后来中国又不够用了,就在规定不需要表示汉字的两个字符都是属于扩展字符集的,只要第一个字符是大于127的就行,就说明他是汉字(GB18030标准)。----所以一个汉字是两个英文字符那么大。

半角全角之分:127位及之前的是半角,之后的是全角。

3、后来像中国这样子的国家太多了,大家一人一个标准,所以需要进行统一了,那就是使用国际化标准组织(ISO)规范的unicode编码。Unicode使用两个字节来表示一个字符。就算是半角的那些英文们也是一样的,虽然他们只需要使用的低八位(把他们的高八位填零了)。

4、再后来,不幸的是unicode也超了,所以人家的解决办法是使用两个unicode编码来表示一个。

Eg:"\uD83D\uDE02\uD83D\uDE02\uD83D\uDE02".length()     // 6

这个字符串表示的是三个”笑哭“(博客园打不出来)的表情,但是却是使用了六个unicode代码单元.

那么utf-8(每次传输的时候传8位) 和utf-16(每次传输的时候传16位)呢?

这个是编码规则,从unicode到utf-8以及utf-16并不是一一对应,而是需要用一定的规则进行转换。因为很多英文文件,他们的高八位几乎是0,那他们的文件凭空被扩大了一倍甚至更多,那不是很吃亏。一个字符现如今使用unicode来表示,他们需要的是一个unicode代码单元或者是一对代码单元,因此他们就需要使用两个字节或者是四个字节。而utf-8是每次传输的时候传输8位,他们是对unicode字符集进行再编码,编码之后的将一个unicode码位编码为1到4个字节。如果是英文就只需要一个字节,如果是辅助字符需要四个字节特别需要注意的是中文现在在utf-8中是需要3个字节(如下图)。而在utf-16中需要4个字节。目前国际上使用最广的是utf-8.

ASCII到Unicode到UTF-8的更多相关文章

  1. ASCII、UNICODE、UTF

    在计算机中,一个字节对应8位,每位可以用0或1表示,因此一个字节可以表示256种情况. ascii 美国人用了一个字节中的后7位来表达他们常用的字符,最高位一直是0,这便是ascii码. 因此asci ...

  2. ascii、unicode、utf、gb等编码详解

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节".再后来,他们又做了一些可以处理这 ...

  3. 字符编码笔记:ASCII,Unicode和UTF-8

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理 ...

  4. ASCII、Unicode、GBK和UTF-8字符编码的区别联系(转载)

    ASCII.Unicode.GBK和UTF-8字符编码的区别联系 转载自:http://dengo.org/archives/901 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同 ...

  5. 字节的高低位知识,Ascii,GB2312,UNICODE等编码的关系与来历

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理 ...

  6. 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)

    在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...

  7. 编码 ASCII, GBK, Unicode+utf-8

    0. 1.参考 网页编码就是那点事 阮一峰 字符编码笔记:ASCII,Unicode 和 UTF-8 2.总结 美国 ASCII 码 发音: /ˈæski/ :128个字符,只占用了一个字节的后面7位 ...

  8. Unicode和UTF的关系

    目录结构: contents structure [+] 什么是USC UCS的编码方式 Unicode的来源 为什么需要Unicode Unicode的方式 Unicode和UTF UTF和Unic ...

  9. Unicode、UTF-8 和 ISO8859-1

    Unicode.UTF-8 和 ISO8859-1到底有什么区别 1.本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文" ...

  10. 关于字符编码:ascii、unicode与utf-8

    转自:https://foofish.net/unicode_utf-8.html 阮一峰老师对普及计算机基础技术功不可没,但毕竟老师不是神,因此也避免不了对某些概念有一些错误的理解,<字符编码 ...

随机推荐

  1. 如何区分oracle服务器、oracle客户端、plsql?

    大家在安装oracle数据库的时候,是不是有很多区分不清的概念,以至于束手无策呢?现在有一个问题,就是怎么区分oracle服务器.oracle客户端.plsql三者的概念?我想,新手在安装的时候可能会 ...

  2. 【BZOJ3697】采药人的路径

    题解: 比较简单的点分治 首先暴力的话直接枚举 然后枚举另一个点的时候顺便看一下有没有零点 n^2 考虑点分治 分治之后用f[i][0/1]表示权值为i,有没有零点的方案数 我们来证明一件事情,如果两 ...

  3. .net core 使用NPOI填充Word模板导出Word

    最近工作用到在Word模板插入数据库数据,导出一个带数据的Word文件,想起来之前操作Word都是用微软提供的Microsoft.Office.Interop.Word,而在最新的..NET CORE ...

  4. 【Android】Android 代码判断是否获取ROOT权限(一)

    [Android]Android 代码判断是否获取ROOT权限 方法比较简单,直接粘贴代码 public synchronized boolean getRootAhth() { Process pr ...

  5. tomcat调度配置

    调度可以基于nginx和http的调度 配置环境 1 安装tomcat 2 创建一个test测试页面 mkdir  /var/lib/tomcat/webapps/test/{WEB-INF,META ...

  6. cactiEZ 配置

    CactiEZ 中文版是简单有效的cacti中文解决方案,它基于centos6 整合了cacti的相关软件,重新编译的一个新的操作系统 它基于centos6,启动速度快,支持EXT4文件系统,全中文页 ...

  7. Python 多进程multiprocessing

    一.python多线程其实在底层来说只是单线程,因此python多线程也称为假线程,之所以用多线程的意义是因为线程不停的切换这样比串行还是要快很多.python多线程中只要涉及到io或者sleep就会 ...

  8. 010 pandas的DataFrame

    一:创建 1.通过二维数组进行创建 2.取值 取列,取位置的值 3.切片取值 这个和上面的有些不同,这里先取行,再取列 4.设定列索引 这里使用的行索引与上面不同. 5.通过字典的方式创建 6.索引 ...

  9. POJ 2488 A Knight's Journey-dfs

    题目链接:http://poj.org/problem?id=2488 题目解读:首先得弄清楚国际象棋中关于“马走日”的规则,如上图中的马,它的下一步的走法有8中,所以对每一个位置的马,它所能走的8个 ...

  10. JavaEE 之 WebService

    1.WebService a.定义:WebService是一种跨编程语言和跨操作系统平台的远程调用技术 b.三大技术: XML+XSD,SOAP,WSDL c.SOAP协议 = HTTP协议 + XM ...