简单的理解unicode和utf-8的关系
来源:互联网 发布:艾瑞咨询好吗 知乎 编辑:程序博客网 时间:2024/06/05 11:12
目前,做了个简单的爬虫程序,爬取到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
例如"A"= 0x0043 utf-8只需要存储一个utf-8的字节流就行了
而中文“杨”是0x6768 utf-8就需要3哥utf-8的字节流去表示
至于utf-16和utf-32 都是以无符号的整数为单位
- 简单的理解unicode和utf-8的关系
- Unicode和UTF-8之间的关系
- Unicode和UTF-8之间的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Unicode和UTF-8的关系
- Jenkins+Maven进行Java项目持续集成
- java集合学习一
- 在AppDelegate自定义一个ViewController
- POJ 3259 Wormholes(SPFA)
- [Leetcode] Balanced Binary Tree
- 简单的理解unicode和utf-8的关系
- UVA - 11983 Weird Advertisement (线段树求并面积)
- Hibernate单向多对一级联删除引发的问题
- HDU2544,最短路
- V7 jar
- 【RPi树莓派使用指南】GPIO驱动方法
- UVA 10228 - Star not a Tree?(模拟退火)
- Nested Classes,Static Classes,Non-static Classes,Inner Classes,Local Classes,Anonymous Classes
- Android:实现手势滑动的事件处理方法