`
hongjn
  • 浏览: 55268 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

java 字符编码深入理解(续)

阅读更多

在看完Java核心技术第八版第46页3.6.5章节,对代码单元和代码点再做一次总结。关于这俩概念的研究至此就算完成了。

有关代码单元和代码点的理解:
  1. Char: 在java中是采用UTF-16编码的,也就是说,Char是代表一个字符单元。
  2. 代码单元:UTF-8中是用8个字节表示的,UTF-16中使用16个字节表示的等等。Java中采用的是UTF-16编码!
  3. 代码点:对应各种真正字符(char不是真正的字符,是代码单元)的Unicode编码。
  4. 一个代码点可能对应一对代码单元,如辅助字符。

因为以上原因,在Java中,不赞成使用Char类型,因为它并不能代表一个真正的字符,而只是代码单元,而操作中,我们往往想得到的是真正的字符,而不是代码单元char。

当然,一般我们很少遇到辅助字符(由两个代码单元组成),但还是有必要了解一下。

具体操作及区别:

String test = "Hello";

长度:test.Length();   //返回代码单元的数量

         test.codePointCount(0,test.Length()); //0-length单元之间,返回代码点的数量

 

字符

    test.charAt(i);  //返回第i个代码单元

 

int index = test.offByCodePoint(0,i); //返回第i个代码点的专用索引

test.codePointAt(index);             //返回第i个代码点

 

遍历字符串真正字符:

int cp = test.codePointAt(i);

if(Character.isSupplementaryCodePoint(cp)) i += 2;  //判断是否是辅助字符

else i++;

最后,Java中除了不推荐使用char类型,也不推荐使用字符串的charAt方法!

1
1
分享到:
评论

相关推荐

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-049-Java基本语法-通过ASCII再理解字符编码.avi 北京动力节点-Java编程零基础教程-050-Java基本语法-ASCII.avi 北京动力节点-Java编程零基础教程-051-Java基本语法-ISO8859-1....

    Java工程师必学系列课程之5--《字符串及正则表达式》视频课程

    并完成案例前导课程:《Java工程师必学系列课程》前4部课程内容:本课程是《Java工程师必学系列课程》的第5部分,主要讲解Java语言中字符串相关知识、字符编码常识和正则表达式的使用。本课程涉及的主要内容可以分为...

    Java开发详解.zip

    031216_【第12章:JAVA IO】_字符编码笔记.pdf 031217_【第12章:JAVA IO】_对象序列化笔记.pdf 031218_〖第12章:JAVA IO〗_实例操作—单人信息管理程序笔记.pdf 031219_〖第12章:JAVA IO〗_实例操作:投票程序...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    7.11 小结:多方位理解Java方法 191 7.12 习题 192 第8章 Java中的包(Package)命名习惯和注释 193 教学视频:43分钟 8.1 Java中的包(Package) 193 8.1.1 Java中的包 193 8.1.2 在Eclipse中使用包 194 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    7.11 小结:多方位理解Java方法 191 7.12 习题 192 第8章 Java中的包(Package)命名习惯和注释 193 教学视频:43分钟 8.1 Java中的包(Package) 193 8.1.1 Java中的包 193 8.1.2 在Eclipse中使用包 194 ...

    疯狂JAVA讲义

    第1章 Java概述 1 1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6...

    Java面试宝典(传说中的葵花宝典).doc

    char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储...

    C++编程思想(Thinking in C++)完美版pdf

    第3章 深入理解字符串 第4章 输入输出流 第5章 深入理解模板 第6章 通用算法 第7章 通用容器 第三部分 专题 第8章 运行时类型识别 第9章 多重继承 第10章 设计模式 第11章 并发 附录 附录A 推荐读物 附录B 其他 索引...

    精通并发与 netty 视频教程(2018)视频教程

    39_NIO中Scattering与Gathering深度解析 40_Selector源码深入分析 41_NIO网络访问模式分析 42_NIO网络编程实例剖析 43_NIO网络编程深度解析 44_NIO网络客户端编写详解 45_深入探索Java字符集编解码 46_字符集编解码...

    java web开发技术大全

    4.7.1 Java的编码原理 4.7.2 实例:解决输出中文乱码问题 4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 4.7.4 实例:用AJAX技术发送和接收中文信息 4.7.5 实例:在请求消息头和响应消息头...

    java web技术开发大全(最全最新)

    4.7.1 Java的编码原理 4.7.2 实例:解决输出中文乱码问题 4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 4.7.4 实例:用AJAX技术发送和接收中文信息 4.7.5 实例:在请求消息头和响应消息头中转输...

    Java语言课程设计任务书.doc

    目的: 1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握; 2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识 和实际有机的结合起来,锻炼学生的分析解决实际问题的...

    精通并发与netty视频教程(2018)视频教程

    45_深入探索Java字符集编解码 46_字符集编解码全方位解析 47_Netty服务器与客户端编码模式回顾及源码分析准备 48_Netty与NIO系统总结及NIO与Netty之间的关联关系分析 49_零拷贝深入剖析及用户空间与内核空间切换方式...

    Visual C++ 2005入门经典--源代码及课后练习答案

    第8章 深入理解类 369 8.1 类的析构函数 369 8.1.1 析构函数的概念 369 8.1.2 默认的析构函数 370 8.1.3 析构函数与动态内存分配 372 8.2 实现复制构造函数 375 8.3 在变量之间共享内存 377 8.3.1 ...

    精通并发与netty 无加密视频

    第45讲:深入探索Java字符集编解码 第46讲:字符集编解码全方位解析 第47讲:Netty服务器与客户端编码模式回顾及源码分析准备 第48讲:Netty与NIO系统总结及NIO与Netty之间的关联关系分析 第49讲:零拷贝深入...

    Python语言程序设计PPT课件.zip

    每一章开头的本章要点都是要求学习者深入理解的重要知识和熟练掌握的关键技术。每一章的小结都是对本章要点的具体解释,供学习者复习查询。 本书为河北省高等教育教学改革研究与实践项目“新工科背景下警务大数据...

    Python语言程序设计习题答案.zip

    每一章开头的本章要点都是要求学习者深入理解的重要知识和熟练掌握的关键技术。每一章的小结都是对本章要点的具体解释,供学习者复习查询。 本书为河北省高等教育教学改革研究与实践项目“新工科背景下警务大数据...

    Grails 中文参考手册

    11.2 字符串的编码和解码 11.3 身份验证 11.4 关于安全的插件 11.4.1 Acegi 11.4.2 JSecurity 12 插件 12.1 创建和安装插件 12.2 理解插件的结构 12.3 提供基础的工件 12.4 评估规约 12.5 参与构建事件 12.6 参与...

    Python语言程序设计源代码.zip

    每一章开头的本章要点都是要求学习者深入理解的重要知识和熟练掌握的关键技术。每一章的小结都是对本章要点的具体解释,供学习者复习查询。 本书为河北省高等教育教学改革研究与实践项目“新工科背景下警务大数据...

Global site tag (gtag.js) - Google Analytics