`
acrbb
  • 浏览: 11692 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java Unicode 总结

 
阅读更多
  1. Unicode 可以代表当年世界所有的字符!
  2. 代码点其实就是某个字母相关联的数字,计算机世界上每个字符都有唯一的对应数字
  3. UTF-8,UTF-16是指编码标准方案,比如utf8,就是指一个字符用1-4个byte 进行表示!
  4. utf16是指一个字符用一到2 个 16位为单位的代码单元进行表示。其中有规定,如果用一个编码单元进行标识时,不能用U+D800 至 U+DFFF 保留用于 UTF-16;没有这些值分配字符作为代码点 来表示! 因为他们用来表示需要2个代码单元来表示时,作为相应的高低位范围。 高代理范围(U+D800 至U+DBFF),第二个单元来自于低代理范围(U+DC00至 U+DFFF)来表示。
  5.   String s = "\u0041\u00DF\u6771\uD801\uDC00";
            System.out.println(s.length());
            System.out.println(s.getBytes("UTF-8").length);
            System.out.println("Print out length one by one...");
            System.out.println("\u0041".getBytes("UTF-8").length);
            System.out.println("\u00DF".getBytes("UTF-8").length);
            System.out.println("\u6771".getBytes("UTF-8").length);
            System.out.println("\uD801\uDC00".getBytes("UTF-8").length);
     上面输出5,表示5个utf16编码单元!
  6. 5
    10
    Print out length one by one...
    1
    2
    3
    4
    
     

 

 

 

字符编码基本概念:

Q: 什么是字符?

A: 字符(character  )是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“严”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。

 

Q: 什么是字符集?

A: 字符集(character set )是字符的集合。例如,汉字字符是中国人最先发明的字符,在中文、日文、韩文和越南文的书写中使用。

 

Q:什么是编码字符集?

A:编码字符集(coded characterset )是一个字符集,它为每一个字符分配一个唯一数字。Unicode 标准的核心是一个编码字符集,字母“A”的编码为 004116  和字符“€”的编码为 20AC16 。Unicode 标准始终使用十六进制数字,而且在书写时在前面加上前缀“U+”,所以“A”的编码书写为“U+0041”。

 

Q: 什么是代码点?

A: 代码点(Code points )是指可用于编码字符集的数字。编码字符集定义一个有效的代码点范围,但是并不一定将字符 分配给所有这些代码点。有效的 Unicode 代码点范围是 U+0000 至 U+10FFFF。Unicode 4.0 将字符分配给一百多万个代码点中的 96,382 代码点。

比如 unicode U+20C30 的代码点为134192,U+20C30和134192是等价的。在java中可通过int i =Integer.parseInt("20C30", 16);得到其代码点。

 

Q: 什么是增补字符?

A: 增补字符(Supplementarycharacters )是代码点在 U+10000 至 U+10FFFF 范围之间的字符,也就是那些使用原始的 Unicode 的 16 位设计无法表示的字符。从 U+0000 至 U+FFFF 之间的字符集有时候被称为基本多语言面 (BMP)。因此,每一个 Unicode 字符要么属于 BMP,要么属于增补字符。

 

Q: 什么是字符编码方案?

A: 字符编码方案(character encodingscheme )是从一个或多个编码字符集到一个或多个固定宽度代码单元序列的映射。最常用的代码单元是字节,但是 16 位或 32 位整数也可用于内部处理。UTF-32、UTF-16 和 UTF-8 是 Unicode 标准的编码字符集的字符编码方案。

 

Q: UTF-32、UTF-16 、UTF-8 都是什么意思?

A: 这些都是unicode的编码方式,说白了就是如何用二进制来表示unicode。

UTF-32 即将每一个 Unicode 代码点表示为相同值的 32 位整数。很明显,它是内部处理最方便的表达方式,但是,如果作为一般字符串表达方式,则要消耗更多的内存。

UTF-16 使用一个或两个未分配的 16 位代码单元的序列对 Unicode 代码点进行编码。值 U+0000 至U+FFFF 编码为一个相同值的 16位单元。增补字符编码为两个代码单元,第一个单元来自于高代理范围(U+D800 至U+DBFF),第二个单元来自于低代理范围(U+DC00至 U+DFFF)。这在概念上可能看起来类似于多字节编码,但是其中有一个重要区别:值U+D800 至 U+DFFF 保留用于 UTF-16;没有这些值分配字符作为代码点。这意味着,对于一个字符串中的每个单独的代码单元,软件可以识别是否该代码单元表示某个单单元字符,或者是 否该代码单元是某个双单元字符的第一个或第二单元。这相当于某些传统的多字节字符编码来说是一个显著的改进,在传统的多字节字符编码中,字节值 0x41 既可能表示字母“A”,也可能是一个双字节字符的第二个字节。

UTF-8 使用一至四个字节的序列对编码 Unicode 代码点进行编码。U+0000 至U+007F 使用一个字节编码,U+0080至 U+07FF 使用两个字节,U+0800 至 U+FFFF使用三个字节,而U+10000 至 U+10FFFF 使用四个字节。UTF-8 设计原理为:字节值 0x00 至0x7F 始终表示代码点U+0000 至 U+007F(Basic Latin 字符子集,它对应 ASCII 字符集)。这些字节值永远不会表示其他代码点,这一特性使 UTF-8 可以很方便地在软件中将特殊的含义赋予某些 ASCII 字符。

Unicode符号范围 | UTF-8编码方式

分享到:
评论

相关推荐

    java实现十六进制字符unicode与中英文转换示例

    总结,这个示例展示了如何在Java中处理Unicode和十六进制字符串的转换,强调了理解字符编码格式和处理过程的重要性。在实际开发中,正确处理字符编码可以避免乱码问题,确保数据的准确性和一致性。同时,开发者应该...

    Java中编码以及Unicode总结.doc

    Java中编码以及Unicode总结

    Java中编码方式和Unicode知识总结

    以下是对Java中编码方式和Unicode的知识点总结: 1. 基本概念 - bit:计算机存储的最小单位,只能是0或者1。 - byte:一个字节是8个bit,计算机表示的基本单位。 - 字节换算:1KB(千字节)= 1024字节,1MB(兆字节...

    java基本数据类型和数组,java编制0-255之间的UNICODE编码表

    根据给定文件的信息,我们可以总结出以下相关的Java知识点: ### 1. Java基本数据类型 在Java中,基本数据类型包括整型(如`byte`, `short`, `int`, `long`)、浮点型(如`float`, `double`)、布尔型 (`boolean`)...

    java编码总结1

    【标题】:“Java编码总结1”主要涉及到Java编程语言中的编码问题,这在软件开发中是至关重要的。编码问题往往会导致程序出现难以预料的错误,尤其是处理多国语言或者特殊字符时。Java作为广泛使用的跨平台语言,其...

    java重要知识点总结

    ### Java重要知识点总结 #### 1. Java是一种编译解释型的语言 Java 语言的特点是它结合了编译型语言的高效性和解释型语言的灵活性。在开发阶段,Java 源代码首先被编译器转换成字节码(Bytecode),这是一种中间...

    java个人总结,觉得还不错

    - `char`类型用于表示单个字符,使用Unicode编码,占用2字节。 - `byte`、`short`、`int`、`long`分别占用1、2、4、8字节,用于表示整型数值。 - `float`和`double`分别占用4和8字节,用于表示浮点型数值。 - **...

    Unicode-EastAsianWidth-1.33.tar_east_unicode_

    总结来说,Unicode东亚宽度1.33版是Unicode标准的一个重要组成部分,它为处理东亚语言的字符宽度提供了规范,确保了跨平台、跨设备的文本显示一致性。对于任何涉及东亚语言的软件开发工作,理解和应用这个标准都是...

    Java自学总结94点

    ### Java自学总结94点知识点详解 #### 一、标识符与关键字 1. **标识符**: 在Java中,标识符用于命名类名、变量名、方法名等。标识符可以由字母、数字、下划线`_`及美元符号`$`组成,但不能以数字开头。 - 示例:`...

    java 学习要点总结

    Java 学习要点总结 Java 学习总结 Unit 1 相关概念: 1. JDK (Java Develop Kit):Java 开发工具包。 2. JRE (Java Runtime Environment):Java 运行环境。 3. J2EE (Java Enterprise Edition):Java 企业版,...

    Unicode编码所有汉字

    总结一下,本压缩包可能包含的是一个用于演示如何在CMD中使用Java处理Unicode编码汉字的示例项目。通过学习和理解Unicode编码及其在Java中的应用,你可以更深入地了解字符编码体系,并提升你的跨语言编程能力。

    Java 学习基本知识总结

    ### Java 学习基本知识总结 #### Java基础入门 ##### Java语言概述 - **起源与发展**:Java由Sun Microsystems公司于1995年推出,最初由James Gosling设计。它是一种面向对象、跨平台的高级编程语言。 - **特点**...

    java 语言基础总结

    Java语言基础总结 Java是一种广泛使用的面向对象的编程语言,以其跨平台、安全性和稳定性而闻名。本总结将深入探讨Java语言的基础知识,包括语法、类与对象、封装、继承和多态等核心概念。 1. **Java语法基础** ...

    中文转化为unicode格式的方法类

    总结来说,将中文转化为 Unicode 格式是通过理解 Unicode 编码原理,利用 Java 提供的相关 API 完成的。`unicodeConvert.java` 类是实现这一功能的代码载体,它可以方便地在各种场景下进行中文字符与 Unicode 之间的...

    java面试总结(ssh)

    【Java面试总结(SSH)】 Java面试中,面试官通常会关注候选人的基础知识以及对SSH(Struts、Spring、Hibernate)三大框架的理解和应用。以下是一些常见的面试知识点: 1. **Java基础** - **变量比较**:面试中可能...

    Java知识总结-完整版

    ### Java知识总结——关键知识点详解 #### 一、Java概述 - **面向对象特性**:Java是一种完全面向对象的编程语言,它继承了C++的一些面向对象特性,并且简化了一些复杂的概念,如去掉了指针操作,使得程序更加安全...

    Java面试题总结.doc

    Java面试题总结主要涵盖Java基础知识,包括修饰符的解析、垃圾回收算法、JVM版本、字符类型、常用包的介绍以及方法的重载与重写等核心概念。下面将对这些知识点进行详细阐述: 1. **Java修饰符**:Java中的访问修饰...

    java关键字总结珍藏版(48个)

    ### Java关键字总结珍藏版(48个) #### 1. abstract - **定义与用途**:`abstract`关键字在Java中主要用于定义抽象类和抽象方法。抽象类是指那些不能直接实例化的类,它们通常会被继承来提供进一步的实现细节。而...

    毕向东Java基础总结(超级经典)

    【毕向东Java基础总结】 Java,作为一种广泛应用的高级编程语言,以其“一次编写,到处运行”的跨平台特性,深受开发者喜爱。毕向东老师的Java基础总结,是一部针对Java初学者的经典教程,涵盖了Java语言的核心概念...

Global site tag (gtag.js) - Google Analytics