目前,做了个简单的爬虫程序,爬取到utf-8的页面中竟然存在着混合了unicode的编码字符串的字符串 例如   \u1234中文

先说说如何将unicode的编码字符串转换成相应的编码对象

就想着用正则先将unicode过滤出来

正则式是(\\u[0-9,a-f]{4})

然后取出\uXXXX 后面四位编码 例如:\u65e0\u804a 取出来就是   65e0 和 804a

然后使用,

<span style="font-size:12px;"> String.valueOf((char)Integer.parseInt("65e0",16));</span>

就能得到相应的unicode的编码对象  “无聊”

在做测试的时候

如果你采用new String("\u65e0\u804a ")你是直接得到汉字“无聊”的

但是如果如果是采用的是一些外部读入的方式

得到的就是"\u65e0\u804a "  需要通过上面的方式进行转换

unicode-table 在这里 你能看到所有的unicode

为了了解unicode就去查了下unicode,下面都是个人的低级见解:

首先我们需要理解下字符编码

字符编码: wiki给出的解释:字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数串行、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。说简单点就是   为了方便计算机识别和传输而定义出来的字符的代号。

问题来了:

大家都定义了自己的编码方式,日本人用日本Shift_JIS编码的文件,我们用中文编码系统打开就会是乱码

世界上那么多的字,有的没的,谁知道啊。所以就有了unicode的存在,

总不能像office那样 什么编解码文件都装全了吧

所以unicode就为全世界所有的(绝大部分存在的)文字和符号都定义了相应的编码,随着文字的不断的增加,可以发现,用来定义编码的字节会从一个字节变成两个字节(UCS-2用两个字节编码),变成三个字节,变成四个字节(UCS-4用4个字节编码)。而本身英文只占一个字节,中文占两个字节,问题来了,编码已经比它所代表的文字占的存储空间大了。

现在理解起来就会简单了,为什么会有utf-8的存在,就是为了压缩unicode编码存储空间

UTF-8

UTF-8以字节为单位对Unicode进行编码。从Unicode到UTF-8的编码方式如下:
Unicode编码(十六进制) 
UTF-8 字节流(二进制)
000000 - 00007F
0xxxxxxx(ASCII字符 )
000080 - 0007FF
110xxxxx 10xxxxxx
000800 - 00FFFF
1110xxxx 10xxxxxx 10xxxxxx
010000 - 10FFFF
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx(注意红字部分,几个1,就代表当前字符的编码有几个字节组成,解码时边会直接往后面字节读取)

例如"A"= 0x0043  utf-8只需要存储一个utf-8的字节流就行了

而中文“杨”是0x6768  utf-8就需要3哥utf-8的字节流去表示

至于utf-16和utf-32 都是以无符号的整数为单位




简单的理解unicode和utf-8的关系相关推荐

  1. 编码(2)从字节理解Unicode(UTF8/UTF16)

    https://www.cnblogs.com/zizifn/p/4716712.html 从字节理解Unicode(UTF8/UTF16) 如果你不知道或者不了解什么是Unicode/UTF8/UT ...

  2. ASCII Unicode GBK UTF的联系

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

  3. php怎么读取excel里的数据类型,php读取excel表格数据-对PHPExcel一些简单的理解 及怎么读取单元格数据...

    php读取excel,excel下多个个工作表,该怎么读取 php读取excel,excel下多个个工作表的方法: 1.利用PHPExcelReader来完成多个excel的读取. 2.PHPExce ...

  4. 如何简单地理解Python中的if __name__ == '__main__'

    如何简单地理解Python中的if __name__ == '__main__' 文章目录: 一.摘要 二. 程序入口 虽然已经知道这个具体的用法,但是这篇文章有很多细节写的还是很好,决定转载一下,日 ...

  5. 从C# String类理解Unicode(UTF8/UTF16)

    上一篇博客:从字节理解Unicode(UTF8/UTF16).这次我将从C# code 中再一次阐述上篇博客的内容. C# 代码看UTF8 代码如下: string test = "UTF- ...

  6. 简单地理解 Python 的装饰器

    关于decorator说的比较透彻,作者是一位很善于讲课的人. 本文系转载,作者:0xFEE1C001 原文链接 www.lightxue.com/understand-python-decorato ...

  7. [C#]简单的理解委托和事件

    委托 在C++中可以利用"函数指针"将对方法的引用作为实参传递给另一个方法,而C#中可以利用委托提供相同的功能. 委托-内部机制 但是委托实际上是一个特殊的类.委托必须直接或间接的 ...

  8. 基于知识图谱的问答系统简单流程理解(开放型知识图谱、实体类型较多的图谱)

    写在前面 虽然网上代码一大堆,论文一大堆,但是我连一篇实实在在介绍基于知识库的问答系统实现逻辑简单介绍的都找不到. 当然,基于对模板匹配的博客我倒是找到了一篇,见: https://blog.csdn ...

  9. C语言里的和*的简单作用理解

    ##C语言里的&和*的简单作用理解   自己在C里,关于&与*的作用老是迷糊了好久,学了也是忘记,所以在此再做笔记,以便给有同样困扰的小白一起学习. 首先我们要知道,一个变量存在计算机 ...

最新文章

  1. 无限互联新浪微博项目(视频)分享
  2. 学python先学什么-学Python之前,什么最重要?
  3. leetcode714.买卖股票的
  4. Java核心(五)深入理解BIO、NIO、AIO
  5. bootstrap table 表格支持shirt 多选_bootstrap-table 表格行内编辑实现
  6. PAT-Travel Plan (30)-Dijkstra和SPFA
  7. linux中哪一个标记可以作为子进程,linux系统编程试卷(答案)
  8. cfree运行程序错误的原因_ARM Cortex-M 系列 MCU错误代码自动追踪库的使用经验分享
  9. linux ssh最大会话数,Linux Shell 脚本限制ssh最大用户登录数
  10. yum命令报错 yum update File /usr/bin/yum, line 30 except KeyboardInterrupt, e: --CentOS7.5
  11. Linux系统下公式编辑器KLatexFormula
  12. 一文详解中英文在NLP上的10大差异点
  13. hsqldb mysql_安装HSQLDB
  14. 岩土工程颗粒流软件PFC6.0实用技巧——将abaqus网格转换成PFC流体网格
  15. 大学物理第三版朱峰课后答案详解_大学物理 第三版 [朱峰 主编] 2014年版
  16. opencv 特征提取 -SIFT
  17. uniapp大转盘抽奖
  18. 扩展lucas学习笔记
  19. STM32学习笔记1(初识STM32)
  20. 使用 Swift 在 iOS 10 中集成 Siri —— SiriKit 教程(Part 1) 1

热门文章

  1. Java后端开发技术栈
  2. win7系统没有计算机睡眠状态,win7旗舰版系统休眠模式和睡眠模式的区别
  3. 聚焦安稳易用,云和恩墨 MogDB 荣登“集中式数据库影响力指数”榜单
  4. Cygwin下载安装
  5. 开源:MIS金质打印通原理及实现 Step by step (1)
  6. Redis键-值数据库 nosql 数据建模(3)------ 如何存储主从表数据 一对多关系
  7. ngx之日志切割 、ngx信号
  8. 物联网开发 7 旗点云物联网云平台
  9. 角色动画中的骨骼蒙皮技术
  10. 微信小程序中实现地图导航