主题句:每个编码形式将字符从字符集转换为编码数据。
 说白了一个代码点就是一个Unicode字符。代码单元就是代码点的集合。
字符视图
要了解字符集标准,您必须能区分三种不同的字符视图: 字符集(字符的抽象列表)。
作为带标量值的“代码点”的字符。
作为编码数据的字符。
字符集(字符的抽象列表) 字符集是各种文字(包括拉丁文、西里尔文、中文、朝鲜语、日语、希伯来语和阿拉伯语)中所包含的字符的一个抽象列表,由一百多万个字符组成。字符集还包括其他符号,例如音符。 Unicode 和 GB18030 标准都具有字符集。当某个标准添加了新字符时,为了保持对等,另一个标准也将添加这些字符。 作为带标量值的“代码点”的字符 注意 这第二个字符视图只适用于 Unicode,而不适用于 GB18030。
字符集中的每个字符都被分配到一个“代码点”。每个代码点都有一个特定的数值,称为标量值。该标量值通常用十六进制表示。 代码点存在于“代码空间”中。代码空间由许多标量值组成,这些值被划分在两个平面中: 基本多语种平面(64k 大小)。
在 Unicode 中,此下平面中的值的十六进制表示位于 U+0000 到 U+FFFF 的范围中。 辅助多语种平面(16 个 64k 大小的附加节)。
在 Unicode 中,此上平面中的值的十六进制表示位于 U+10000 到 U+10FFFF 的范围中。 所有可能的标量值的完整代码空间的大小为 17 * 64k(1,088,000 个可能值)。 作为编码数据的字符 每个编码形式将字符从字符集转换为编码数据。 在 GB18030 中,编码数据直接从字符集派生:标量值(作为字符集和编码数据之间的媒介)的概念只适用于 Unicode。 在 Unicode 中,通过向标量值应用某个算法来派生编码数据。 Unicode 定义了三种字符编码形式: UTF-8
UTF-16
UTF-32
代码点和代码单元 在每种编码形式中,代码点被映射到一个或多个代码单元。 注意 有关代码点的概述,请参见上一节字符视图。
“代码单元”是各个编码形式中的单个单元。代码单元的大小等效于特定编码的位数测量单位: UTF-8 中的代码单元由 8 位组成。
UTF-16 中的代码单元由 16 位组成。
UTF-32 中的代码单元由 32 位组成。
GB18030 中的代码单元由 8 位组成。
每个代码点中的代码单元数 映射到代码点所需的代码单元数根据编码形式而有所不同: UTF-8
在 UTF-8 中,因为代码单元较小的缘故,每个代码点常常被映射到多个代码单元。代码点将被映射到一个、两个、三个或四个代码单元。 UTF-16
UTF-16 的代码单元大小是 8 位代码单元的两倍。所以,标量值小于 U+10000 的代码点被编码到单个代码单元中。 对于标量值大于或等于 U+10000 的代码点,每个代码点需要两个代码单元。在 UTF-16 中,这些代码单元对有一个独特的术语:“Unicode 代理对”。 注意 下面对 Unicode 代理对的支持进行了讨论。
UTF-32
UTF-32 中使用的 32 位代码单元足够大,每个代码点都可编码为单个代码单元。 GB18030
在 GB18030 中,因为代码单元较小的缘故,每个代码点常常被映射到多个代码单元。代码点将被映射到一个、两个或四个代码单元。 对 Unicode 代理对的支持 某些受 Unicode 支持的文字包含代码点的标量值大于或等于 U+10000 的字符。在 UTF-16 中,通过使用代理对来对这些代码点进行编码。 正确处理 Unicode 代理对非常重要。例如,当您在使用 UTF-16 编码的应用程序中处理文本时,如果要添加、删除或选择字符以进行剪切、复制或粘贴操作,文本光标必须将每个代码点作为单个文本字符导航。
												

java中是如何解决编码问题的,比如char类型的对象是如何存储的呢?的更多相关文章

  1. 在Java中如何进行BASE64编码和解码

    在Java中如何进行BASE64编码和解码 //在Java中如何进行BASE64编码和解码 package me.xzh.study.sun.misc.BASE64; import sun.misc. ...

  2. java中的字符集和编码

    前言 上次对计算机中的“字符集”和“编码”分别进行了总结,并指出二者之间的区别,不要搞混了,不清楚的再回到上一章看一下.今天再总结下java中是如何使用字符集(主要是Unicode字符集,其他常用字符 ...

  3. java中,null值可以被强制转换为任何类型

    java中,null值可以被强制转换为任何类型

  4. Java中常用的字符编码-解析

    ASCII字符编码 美国信息互换标准代码,为罗马字母编制的一套编码,主要用于表达现代英语和其他西欧语言中的字符,1字节的7位表示一个字符. ISO-8859-1字符编码 ISO为西欧语言中的字符制定的 ...

  5. 在 Java 中如何进行 BASE64 编码和解码

    BASE64 编码是一种常用的字符编码,在很多地方都会用到.JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和 ...

  6. Java中常用的解决乱码的几种方法

    乱码有时候是一个非常让人头疼的问题,这里就总结一下常用的解决乱码的方法. 只知道的用法,却不明白为什么这么用…… 一. 在Java代码中: request.setCharacterEncoding(& ...

  7. 大数据项目中js中代码和java中代码(解决Tomcat打印日志中文乱码)

    Idea2018中集成Tomcat9导致OutPut乱码找到tomcat的安装目录,打开logging.properties文件,增加一行代码,覆盖默认设置,将日志编码格式修改为GBK.java.ut ...

  8. java中碰到无法解决的问题:无法访问类的getter访问器

    大牛们来看看,俺这是咋了?因博问不让发图,发到这里求助: 以上两个方法都是从mysql中select数据,为嘛第二个出现辣鸡报错? 请注意: reslist.size() = 289 第二种方法已经获 ...

  9. java中图片地址base64编码的相互转换

    public class Base64Url { /** * 将base64编码字符串转换为图片 * @param imgStr: base64编码字符串 * @param path: 图片路径-具体 ...

随机推荐

  1. 三目运算符与if else的运行效率

    两者的效率比较: 当比较次数较少时,效率一样: 当比较次数较多时,发现ifelse的速度更快,应该是其汇编指令更少的原因.   if else的汇编代码如下:     三目运算符代码如下:

  2. Nhibernate系列学习之(四) 数据操作

    数据操作,在这里主要介绍INSERT.UPDATE.DELETE.我们在使用NHibernate的时候,如果只是查询数据,不需要改变数据库的值,那么是不需要提交或者回滚到数据库的. 一.INSERT ...

  3. New Concept English three (51)

    22 76 Predicting the future is notoriously difficult. Who could have imagined, in the mid 1970s, for ...

  4. git公私钥的拷贝

    1.场景 由于我换了一台电脑,为了能访问远程仓库,我就把原来电脑上的私钥和config文件拷贝过来 2.出现问题及解决方案 git clone server:xxx_service_express 报 ...

  5. uva10943(隔板法)

    很裸的隔板法. 引用一下维基上对隔板法的解释: 现在有10个球,要放进3个盒子里 ●●●●●●●●●● 隔2个板子,把10个球被隔开成3个部份 ●|●|●●●●●●●●.●|●●|●●●●●●●.●| ...

  6. 我所理解的Mongodb 的优势

    更高的写负载 默认情况下,对比事务安全,MongoDB更关注高的插入速度.如果你需要加载大量低价值的业务数据,比如日志收集,那么MongoDB将很适合你的用例,但是必须避免在要求高事务安全的情景下使用 ...

  7. Linux 链接网络

    目录 查看网卡 存在多个网卡 网卡配置静态IP 报错总结 诚邀访问我的个人博客:我在马路边 更好的阅读体验点击查看原文:Linux链接网络 原创博客,转载请注明出处 @ Linux在安装系统结束后总要 ...

  8. npm镜像安装

    安装淘宝NPM镜像 https://npm.taobao.org/ npm install -g cnpm --registry=https://registry.npm.taobao.org 配置 ...

  9. vbox sethduuid

    laozha@abc$ /usr/bin/vboxmanage internalcommands sethduuid /ud1/VBOX/centos7/CentOS7.vdi UUID change ...

  10. WPF基本概念入门

    关于数据类型,有原子类型,列表类型,字典类型等等,而wpf对应控件有contentControl,itemsControl,headerItemsControl等. 控件和类型一一对应,控件和类型之间 ...