原文链接: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

9.关于Unicode字符集相关推荐

  1. 《windows核心编程系列》二谈谈ANSI和Unicode字符集

    第二章:字符和字符串处理 使用vc编程时项目-->属性-->常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集.一般情况下说Unicode都是 ...

  2. Unicode字符集下WriteFile中文处理

    最近在使用WriteFile函数时发现,vc2008中unicode字符集下处理中文乱码的一些解决方法,归纳如下 1. 写入的时候采用多字节char类型 HANDLE hFile;DWORD nByt ...

  3. unicode 字符集环境下的mfc 读写 ini 配置文件的_WSL:在Windows下优雅地玩Linux

    本文作者:刘观宇,360 奇舞团高级前端工程师.技术经理,W3C CSS工作组成员. 引子 一直以来,Windows的命令行的体验都不是特别的友好.由于Windows以图形界面交互为主,同时微软在一段 ...

  4. UNICODE字符集

    Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既 ...

  5. 【转】刨根究底字符编码之十——Unicode字符集的字符编码方式

    一.字符编码方式CEF的选择 1. 由于Unicode字符集非常大(并且作为开放字符集还在不断扩展之中),有些字符的编号(即码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须使用两 ...

  6. 计算机系统-Unicode字符集与它包含的UTF-8解决方案

    Unicode字符集最早要求每个字符占4个字节,这用英语和阿拉伯语的国家能同意吗?他们肯定不同意,4个字节太大了,但是类似中文韩语日语这些,1个2个字节还放不下,这就提出了Unicode字符集下的UT ...

  7. 通过编写串口助手工具学习MFC过程——(三)Unicode字符集的宽字符和多字节字符转换...

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  8. 让Unicode字符集少添麻烦

    从VC6.0入门的初学者在使用VS2008的时候,往往会遇到VS2008默认使用Unicode字符集带来的麻烦 .比如说,在生成解决方案的时候,经常会遇到以下提示: 无法从"char [9] ...

  9. 关于Unicode字符集,将char数组转化成LPCTSTR

    解决方法 不适用spritf,而是使用wsprintf 1.可变参数: 标准版 sprintf swprintf _stprintf 最大长度版 _snprintf _snwprintf _sntpr ...

最新文章

  1. python读文件操作-python文件操作读取文件写入文件
  2. 一句DOS命令搞定文件合并
  3. Django-认证系统
  4. jz指令是什么意思_S7-200 SMART 运动控制指令详解-电气阿伟带小白启程
  5. Unity3d优化文章
  6. C语言串 typedef char String[MaxLength + 1]
  7. 每个做DBA的孩纸都是上辈子被drop的db
  8. 数字字符串转化成 IP 地址
  9. 哪种css实现方式优势更突出_css和div的优势有哪些?
  10. 电脑分屏设置主屏_如何实现电脑屏幕分屏操作?
  11. 微信/支付宝扫码支付流程
  12. 在linux系统下使用service tomcat start命令打开tomcat失败,报Neither the JAVA_HOME nor the JRE_HOME environment vari
  13. k64 datasheet学习笔记1---概述
  14. scikit-learn初级
  15. 在Visual Studio.NET中更改颜色-黑色与白色
  16. 如何提问,才能让别人回答我们的问题呢?
  17. raid配置ssd为缓存_固态硬盘做缓存如何设置
  18. C语言有趣的代码大全,分享一段有趣的小代码
  19. 海德汉角度编码器RCN727F与替代型号RCN8390F参数对比
  20. 轻量级网络Ghostnet(GhostConv(幻影卷积)、Ghost BottleNeck)详解

热门文章

  1. php装箱,php兑现装箱算法
  2. 【JAVA基础篇】Socket编程
  3. Hello,My first blog!
  4. ci mysql 转义,CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
  5. 导出远程mysql数据库中的表_shell脚本实现导出远程mysql数据库表数据至本地
  6. 小马源码_Java互联网架构-重新认识Java8-HashMap-不一样的源码解读
  7. java 数组写法_java书写、数据类型、数组定义
  8. Linux配置本地yum源(RHEL8)
  9. java线程堆栈_深入JVM剖析Java的线程堆栈
  10. JDK源码解析之 java.lang.Long