`
yangyi
  • 浏览: 114569 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Java中的编码

    博客分类:
  • Java
阅读更多
编码转换,实际就是把byte数组转换为char数组的过程,或者是其逆过程
在Java中,前者通过new String(byte[], Charset) -> StringCoding.decode,
后者通过getBytes(Charset) -> StringCoding.encode
在encode和decode时,默认会采用Charset.defaultCharset(),jvm一般是utf-8。如果无法取得,则会使用iso-8859-1,如果仍无法取得,则System.exit(1);

问题1:在utf-8下,每个字符可以是1-6个字节不等,但是jvm中char是固定2个字节的,那么char如何表示字符呢?

首先澄清一个典型的错误就是认为string是存在某种编码绑定的。string对象建立后,内部持有名为value的char数组,这里char表示了逻辑意义上的字符,而byte没有逻辑意义,只有物理存储意义。凡是char在java中统一都会由utf16来表示。从这个意义上讲,可以说string就是utf16编码的,同时也可以说是不针对任何编码的。可以通过getbytes获得任何编码的二进制表示。这个概念和Date相对于各个时区是类似的。

问题2:2个字节是2^16=65536,没有办法覆盖到全部字符,如何给unicode32的字符集找到默认的char表示?

这个问题我可能多虑了,jvm和windows都按照utf16设计,其中涵盖的汉字是2w多个。对于扩充的东亚字符,oracle也给出了方案,文章说得比较详细,就不赘述了:
http://java.sun.com/developer/technicalArticles/Intl/Supplementary/
另外java.lang.Character中也有说明
分享到:
评论

相关推荐

    阿里Java的编码规范

    Java、编码规范、Java编码规范、阿里巴巴、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里...

    深入分析 Java 中的中文编码问题

    在Java编程中,中文编码问题是一个常见的挑战,尤其是在处理文本输入、输出以及网络通信时。本文将深入探讨Java中的中文编码问题,以及如何有效地解决这些问题。 首先,我们要了解字符编码的基本概念。字符编码是...

    Java安全编码标准

    资源名称:Java安全编码标准内容简介:《java安全编码标准》是java安全编码领域最权威、最全面、最详细的著作,java之父james a. gosling推荐。不仅从语言角度系统而详细地阐述java安全编码的要素、标准、规范和最佳...

    java判断编码方式

    在Java编程语言中,判断文件或字符串的编码方式是一个常见的需求。这主要涉及到字符集的概念,如ASCII、ISO-8859-1、UTF-8等,它们用于将二进制数据转换为人类可读的字符。在Java中,有多种方法可以用来识别或检测一...

    Java文件编码转换源码

    在Java编程语言中,文件编码转换是一个常见的任务,特别是在处理多国语言或者处理不同系统间的文件传输时。本文将深入探讨如何使用Java实现文件编码的转换,主要关注GB2312、UTF-8这两种常见编码格式之间的转换。 ...

    游程编码 JAVA 代码

    在Java中实现哈夫曼编码,需要创建一个哈夫曼树类,包含节点的权值、左子节点和右子节点,以及构造哈夫曼树的方法。同时,需要一个优先队列来辅助构建过程。完成哈夫曼树后,可以通过遍历树生成每个像素值的编码,...

    Java 中的中文编码问题

    深入分析 Java 中的中文编码问题(1) - Java综合 - Java - ITeye论坛.mht

    java中BCD编码

    在Java编程语言中,BCD(Binary Coded Decimal,二进制编码的十进制)是一种特殊的数据编码方式,主要用于处理十进制数值。BCD编码将每个十进制数字映射为4位二进制表示,使得在计算机内部处理时能够更高效地进行十...

    深入分析Java中的中文编码问题

    ### 深入分析Java中的中文编码问题 #### 一、引言 在软件开发过程中,尤其是涉及到国际化和多语言支持的应用中,编码问题一直是令开发者头疼的问题之一。尤其是在使用Java这种跨平台语言进行开发时,不同的操作...

    JAVA安全编码规范参考.pdf

    JAVA安全编码规范参考文档深入分析了在Java开发中如何编写安全的代码,降低系统被攻击的风险。文档内容涵盖了安全编码的基本原则以及常见漏洞的安全编码方法。 一、安全编码基本原则 1. 所有输入数据都是有害的 在...

    Java中编码总结.pdf

    由于提供的文件内容包含了技术性质的详细说明,所以本段落将根据提供的文档内容概述Java中的编码知识,同时纠正识别错误并补充遗漏,确保知识的连贯性和准确性。 首先,文档中提到了Java中与字符编码相关的基本概念...

    tlv的java编码和解码

    在IT领域,尤其是在通信协议和数据编码中,`TLV(Tag-Length-Value)`是一种常见的数据表示方式。本文将详细讲解如何在Java环境中实现TLV的编码与解码,并结合提供的`ber-tlv`资源进行分析。 TLV结构简单明了,由三...

    JAVA中文编码的问题研究

    可以通过修改控制台设置或在Java程序中使用`System.setProperty("file.encoding", "UTF-8")`来设置Java默认编码。 6. 数据库编码 当Java程序连接数据库时,需要确保数据库的字符集与Java程序处理的编码一致。不匹配...

    JAVA程序的编码格式详解

    本文旨在深入探讨Java中的编码格式,帮助开发者更好地理解和解决在开发过程中遇到的编码问题。 #### 二、编码的基本概念 首先我们需要了解为什么需要编码。简单来说,计算机只能识别数字,为了能够让计算机正确地...

    用java修改文件的编码

    在Java编程语言中,修改文件编码是一项常见的任务,特别是在处理不同源代码或数据文件时。本文将深入探讨如何使用Java来实现这一功能,主要关注以下几个关键知识点: 1. **字符编码的理解**:字符编码是将字符与二...

    JAVA获取文件编码格式

    在Java开发过程中,有时我们需要确定一个文件的编码格式,以便正确地读取和处理其中的数据。标题提到的“JAVA获取文件编码格式”是一项常见的任务,特别是在处理来自不同来源的文本文件时。在这种情况下,我们可以...

    Java中文编码问题研究.pdf

    本文主要研究了Java中中文编码问题,探讨了Java SE序的运行原理,分析了Java单机程序、在服务器上运行JSP、Servlets或EJB等产生中文乱码的原因,并提出了相应的解决方案。 一、Java中文编码问题的来源 Java程序...

    java 文件编码转换

    标题"java 文件编码转换"指的是使用Java来解决文件编码问题,而描述中提到的"提供一个jar包和一个java文件"则暗示了我们可以通过这两个文件实现这个功能。 首先,`chardet.jar`可能是一个字符集检测库,用于自动...

Global site tag (gtag.js) - Google Analytics