9.关于Unicode字符集

原文链接:http://blog.csdn.net/yang3wei/article/details/47414483

点击阅读原文

-------------------------------------

1)Java 中 char 占两个字节,既可以表示中文字符,也可以表示英文字符

2)Unicode只是一个编码规范,目前实际实现的unicode编码只要有三种:UTF-8, UCS-2 和 UTF-16

3)UCS-2 是固定长度为 16 位的 unicode 字符集。每个字符都是 2 个字节,UCS-2 只支持 unicode3.0,所以不支持附加字符

4)Unix 平台中普遍支持 UTF-8 字符集,HTML 和大多数浏览器也支持 UTF-8,而 windows 和 java 则支持 UCS-2

5)UTF-8 中汉字一般占三个字节,譬如说,1110xxxx 10yyyyyy 10zzzzzz,除去控制字符,实际上就只占两个字节 xxxxyyyy yyzzzzzz

最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符。显然,这样要表示各种语言中所有的字符是远远不够的。Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示,这样最多可以定义1048576个附加字符,目前unicode4.0只定义了45960个附加字符。

Unicode只是一个编码规范,目前实际实现的unicode编码只要有三种:UTF-8,UCS-2和UTF-16,三种unicode字符集之间可以按照规范进行转换。

UTF-8

UTF-8是一种8位的unicode字符集,编码长度是可变的,并且是ASCII字符集的严格超集,也就是说ASCII中每个字符的编码在UTF-8中是完全一样的。UTF-8字符集中,一个字符可能是1个字节,2个字节,3个字节或者4个字节长。一般来说,欧洲的字母字符长度为1到2个字节,而亚洲的大部分字符则是3个字节,附加字符为4个字节长。

Unix平台中普遍支持UTF-8字符集,HTML和大多数浏览器也支持UTF-8,而window和java则支持UCS-2。

UTF-8的主要优点:

  • 对于欧洲字母字符需要较少的存储空间。
  • 容易从ASCII字符集向UTF-8迁移。

UCS-2

UCS-2是固定长度为16位的unicode字符集。每个字符都是2个字节,UCS-2只支持unicode3.0,所以不支持附加字符。

UCS-2的优点:

  • 对于亚洲字符的存储空间需求比UTF-8少,因为每个字符都是2个字节。
  • 处理字符的速度比UTF-8更快,因为是固定长度编码的。
  • 对于windows和java的支持更好。

UTF-16

UTF-16也是一种16位编码的字符集。实际上,UTF-16就是UCS-2加上附加字符的支持,也就是符合unicode4.0规范的UCS-2。所以UTF-16是UCS-2的严格超集。

UTF-16中的字符,要么是2个字节,要么是4个字节表示的。UTF-16主要在windows2000以上版本使用。

UTF-16相对UTF-8的优点,和UCS-2是一致的。

Oracle从7.0开始提供对Unicode的支持。Oracle个版本的unicode字符集支主要有:

AL32UTF8

一种UTF-8编码的字符集,支持最新的unicode4.0标准。字符长度为1,2或者3个字节,附加字符则为4字节长。

UTF8

支持unicode3.0的UTF-8编码方式。由于附加字符是在unicode3.1中提出的,UTF8不支持附加字符。但是unicode3.0已经为附加字符预留了编码空间,所以即使在UTF8的数据库中插入附加字符,也是可以的,只是数据库会将该字符分隔成两部分,需要占6个字符的长度。所以,如果需要支持附加字符,那么建议将数据库的字符集切换为新的AL32UTF8。

UTF8可用于数据库字符集,也可用于国家字符集。

UTFE

UTFE是基于EBCDIC平台的unicode字符集,就像ASCII平台上的UTF8一样。不同的是,UTFE中,每个字符可能占1,2,3或者4个字节,而附加字符则需要2个4个字节,也就是8个字节来表示。

AL16UTF16

AL16UTF16是一种UTF-16编码的unicode字符集,在Oracle中用于国家字符集。

AL24UTFFSS

该字符集只支持unicode1.1规范,在Oracle7.2~8i版本中使用,目前已经淘汰。


-------------

更多的Java,Angular,Android,大数据,J2EE,Python,数据库,Linux,Java架构师,:

http://www.cnblogs.com/zengmiaogen/p/7083694.html


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.java 关键字与保留字

Java 关键字列表 (依字母排序 共51组)所有的关键字都是小写。 在IDE中都会显示不同的颜色: abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if,imple…

python爬虫的用途_python爬虫用途

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!专业点来说就是应用多台机器同时实现爬虫任务,这多台机器上的爬虫,就是称作分布式爬虫…

android获取短信息,从其ID Android获取短信详细信息

我想得到短信的细节(数字,正文,来的时间);我只知道短信的身份.我可以使用此ID查询“content:// sms”并获取详细信息吗?目前,我可以循环查询每条消息并获取详细信息.但是当你必须从1000 sms获得单次sms细节10次时效率不高…..希望你能理解这个问题.感谢名…

二元函数泰勒公式例题_高等数学期末总复习 DAY 5. 罗尔定理证明题 拉格朗日、柯西中值定理 泰勒公式及麦克劳林公式...

DAY 5.DAY 5.1.罗尔定理2.拉格朗日定理3.柯西中值定理4.泰勒公式及麦克劳林公式1.罗尔定理罗尔定理描述如下:如果 R 上的函数 f(x) 满足以下条件:(1)在闭区间 [a,b] 上连续,(2)在开区间 (a,b) 内…

Hazelcast发布Jet 0.6版本

\看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!\\\分布式计算技术和工具开发商Hazelcast正式发布了他们的开源流式处理引擎Jet 0.6。\\Jet自2017年2月起就已可用,而…

11.标识符_unicode和GBK_各种字符集的关系

标识符 作用: 给变量,类和方法命名。 Java标识符命名规则: --必须以字母,下划线_,美元符$开头。 --其他部分可以是字母,下划线,美元符和数字的任意组合。 --Java标识符大小写敏感&#xf…

python怎么转到下一行_Python转到下一行并保存/编辑内容

这个代码是在以前的帖子中建立的。我正在努力调整它以适应我们的数据。但这不管用。。以下是我们的文件示例:read:1424:2165 TGACCA/1:2165 TGACCA/2 1..100 chr1:3033296..3033395 #just this line 1..100 -chr1:3127494..3127395 1..100 chr1:3740372..3740471 1 …

android应用程序是什么,简述Android应用程序结构是什么?公共题库

试题分类:Android简述Android应用程序结构是什么?解析:Android应用程序结构是:LinuxKernel(Linux内核)、Libraries(系统运行库或者是c/c核心库)、ApplicationFramework(开发框架包)、Applications(核心应用程序)以下这些控件可以放置按钮?答…

《程序设计与数据结构》第八周学习总结

学号 20172326 《程序设计与数据结构》第八周学习总结 教材学习内容总结 后绑定在程序执行时执行多态性可由继承与接口实现排序有选择法排序与插入法排序搜索分为线性搜索与二分搜索算法,同一类型的不同方法可能解决同一问题,但是,效率与难以…

python获取文件名不含后缀名_大部分Python资料都没有说到的重点-用实战教你解决问题的思路...

前言最近有些刚入门Python的小伙伴问我,他已经学会了大部分语法,基本的列表,元组也会使用,但是在实际中需要做一点小需求的时候,仍然不知所措。解决问题重要的并非是如何写代码,而是如何分析和拆解问题&…

12.JAVA基本数据类型

Java是一种强类型语言,每个变量都必须声明类型。 String 不是java的基本数据类型!!! 除了8种基本数据类型之外,其他的都是引用类型。 引用类型的初始值是null byte,short,int类型的默认值为0 …

python成语接龙代码_实现成语接龙(Python)

目录 前言 要实现的规则如下:根据接龙的成语的第一个字与前一个成语结尾的字的比较,分一下三种模式模式1:字相同拼音也要相同 模式2:字相同拼音不要求相同 模式3:字不要相同拼音要求相同,即谐音就可以接龙的…

opencv android jni,OpenCV - AndroidStudio的JNI工程及引用OpenCV

一把利刃,用不好,会伤到你遍体鳞伤。用得好,便为你披荆斩棘,所向披靡。好与不好之间,便是历练。几经波折,终于跌跌撞撞,集成了OpenCV,并实现了灰度图片,自此一扇新的大门已经打开。至此我手中已…

python语句int_python中的int函数

int函数用来把其他类型向下转换为整数类型 int(3.6) --- 3 int(3.2) --- 3 int(1/3) --- 0 int("1") --- 1 int()可以按照指定的进制的整数转换为十进制的整数,如果不指定默认是十进制转换为十进制,第二个参数给0和不给一样,除非你…

13.JAVA基础:八进制,十六进制表示

原文路径:http://simon-c.iteye.com/blog/802149 点击查看原文 ----------------------------------------------------------- 可以使用八进制、十六进制的类型:long, int, short, byte 八进制表示:以0作为前缀,数码有0,1,…

excel图表交互联动_深入讲解EasyShu图表与引用数据动态联动功能

EasyShu一开始的架构是将制作好的图表最终返回给用户,不依赖用户工作表的单元格区域引用,可满足图表绘制后的脱离数据源分享传播,无奈用户最强烈的反馈是要求图表与数据保持联动,这一需求实在对EasyShu是一个巨大的挑战。为了将Ea…

使用pipenv代替virtualenv管理python包

前言 第一次接触到 pipenv 是因为看到董明伟大神的《使用pipenv管理你的项目》,之前可能和大家的选择类似使用 virtualenv 或者 pyenv 来管理 python 的包环境。virtualenv 是针对python的包的多版本管理,通过将python包安装到一个模块来作为python的包虚…

android代码生成excel,AndroidExcel

Android_Excel在android中生成excel##效果图##初始化数据首先我们要先造下测试数据,这里我把数据写死在一个常量类Const中,如下:public class Const {public interface OrderInfo{public static final String[][] orderOne new String[][] {…

14.JAVA整型变量

表示形式 Java语言整型常数的3种表示形式: 1、十进制整数:99,-100,0 2、八进制整数:要以0开头,如015 3、十六进制整数:以0x开头,如0x15 点击查看十进制八进制十六进制概念 public static v…

exists sql用法_干货!SQL性能优化,书写高质量SQL语句

写SQL语句的时候我们往往关注的是SQL的执行结果,但是是否真的关注了SQL的执行效率,是否注意了SQL的写法规范?以下的干货分享是在实际开发过程中总结的,希望对大家有所帮助!1. limit分页优化当偏移量特别大时&#xff0…