`

Java中的byte char String 编码 解码

    博客分类:
  • Java
 
阅读更多

 

char

人能识别的字符,在Java中用Unicode表示,占两个字节,可以表示中文。在jvm中,它的值是唯一的,可以用数字表示:

char a1 ='周';
char a ='\u5468'; //Unicode
char aa =0x5468; //十六进制
char aaa = 21608; //十进制
System.out.println(a1);
System.out.println(a);
System.out.println(aa);
System.out.println(aaa);
输出:
周
周
周
周

 打印所有char

int u=0;
for(int i=0; i<=0xffff; i++){
	System.out.print((char)i);
	u++;
	if(u==100){
		System.out.println();
		u=0;
	}
}

 

 

String 

字符串 本质上就是char[]

String a='中国人4';
System.out.println(a.length);
输出:4

 

 

byte[]

计算机能识别的二进制字节,用于CPU计算、存储或网络传输,一个byte有8位(bit)

 

编码

为什么要编码,Jvm中char可以当做数字来进行运算,每个char占两个字节非常便于CPU计算。但是用作IO传输或存储就显得字节臃余,也不能容错。

想象一下发送电报把一句话(String)变成二进制电文(byte[])叫编码,使用不同的编码表(Charset)产生的二进制电文不一样。 

String str ="a中c";
byte[] bytes = str.getBytes("utf-8");
for(byte b : bytes){
	System.out.print(b+",");
}
输出:97,-28,-72,-83,99,

 

String str ="a中c";
byte[] bytes = str.getBytes("gb2312");
for(byte b : bytes){
	System.out.print(b+",");
}
输出:97,-42,-48,99,

 

String str ="a中c";
byte[] bytes = str.getBytes("gbk");
for(byte b : bytes){
	System.out.print(b+",");
}
输出:97,-42,-48,99,   说明gbk与gb2312是部分兼容的

 

String str ="a中国c";
byte[] bytes = str.getBytes("ascii");
for(byte b : bytes){
	System.out.print(b+",");
}
输出:97,63,63,99, 对于超出范围的字符用63表示

  

 

解码

将电文(byte[])翻译成一句话(String),使用的解码表(Charset)必须和编码的一样

String str ="a中国c";
byte[] bytes = str.getBytes("ascii");
String newStr = new String(bytes, "ascii");
System.out.println(newStr);
输出:a??c

 

 

参考:https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/

分享到:
评论

相关推荐

    java String 与各种进制字符之间的转换

    本文将详细探讨Java中如何进行String与二进制、八进制、十进制以及十六进制之间的转换。 首先,我们要了解进制的概念。进制是一种数字系统,它使用一组符号来表示数值。最常见的有二进制(base-2)、八进制(base-8...

    JAVA_字符编码

    总之,Java中的字符编码是一个复杂的主题,涉及Unicode、编码解码、I/O流的使用以及字符串处理等多个方面。了解这些知识对于编写跨平台、支持多语言的程序至关重要。通过深入学习和实践,开发者可以更好地处理各种...

    各种格式的编码解码工具类分享(hex解码 base64编码)

    本篇文章将详细介绍几种常见的编码解码方式,包括Hex编码、Base64编码以及URL编码,并提供一个集成Apache Commons Codec、Commons Lang和Java JDK的实用工具类`EncodeUtils`。 ### 1. Hex编码与解码 Hex编码是一种...

    Java中String中类的常用方法.doc

    ### Java中String类的常用方法详解 在Java编程语言中,`String` 类是一个非常重要的类,用于表示不可变的字符序列。它提供了丰富的内置方法,使得开发人员能够轻松地处理字符串相关的操作。本文将详细介绍Java中`...

    javajsp中 中文问题详解

    在Java中,字符(`char`)与字节(`byte`)之间的转换是通过编码器(encoder)和解码器(decoder)完成的。Sun公司的标准库中提供了`sun.io.ByteToCharConverter`类,用于实现不同编码间的转换。例如,从GB2312编码...

    Java中String类的方法及说明.pdf

    Java中的String类是Java语言中最基础且至关重要的类之一,它代表不可变的字符序列。在Java中,字符串被广泛用于各种数据处理和文本操作。本文将深入探讨String类的一些关键方法及其用法。 首先,让我们看看String类...

    Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码

    接下来,我们来介绍Java中实现Base64编码与String字符串的相互转换的方法。Java提供了多种实现Base64编码的方式,例如使用Apache Commons Codec库、Java 8的java.util.Base64类等。 在Java中,可以使用Apache ...

    Escape.java_java_

    让我们深入探讨Java中的字符编码和解码以及可能在`Escape.java`中涉及的相关概念。 1. **字符编码**: - **Unicode**:Java使用Unicode作为其内部字符集,这意味着它可以处理世界上几乎所有的字符。Unicode是一个...

    javastring.pdf

    Java中的`String`类是编程中最常用的数据类型之一,它代表不可变的字符序列。`String`类在Java中提供了大量的构造方法和方法,用于创建、操作和比较字符串。以下是一些关键的知识点: 1. **构造方法**: - `String...

    JAVA 编码

    在Java中,字符主要通过`char`、`byte`和`String`三种类型来表示。`char`是Unicode字符,占据16位,可以表示大部分世界语言的字符。`byte`用于在网络传输和存储中表示字节序列。`String`是由`char`组成的数组,它在...

    C# string byte数组转换解析.pdf

    在C#编程中,字符串(string)与字节(byte[])之间的转换是常见的操作,特别是在处理网络传输、文件存储或数据解析时。本文将详细讲解C#中如何进行这两种类型之间的转换,并提供一些实用的方法。 首先,我们来看如何将...

    和PHP、C#通用DELPHI DES 编码 解码 单元

    {* DELPHI、PHP、C#通用DES编码解码单元 *} {* 由TurboPower LockBox部分代码改写 *} {* 滕州市东鸣软件工作室制作 ZWF 2011-12-27 *} {*********************************************************} {EncryDes为...

    C# string byte数组转换解析.docx

    在C#编程语言中,字符串(string)与字节数组(byte[])之间的转换是常见的操作,特别是在处理网络通信、文件读写或数据编码解码等场景。本篇文章将详细探讨C#中如何实现这两种类型之间的转换,并提供实用的代码示例...

    JAVA字符串编解码问题[定义].pdf

    在Java中,所有的字符串都是基于Unicode编码的,Unicode是一种包含几乎世界上所有字符的标准编码,它保证了不同语言间的字符可以统一表示。在Java虚拟机(JVM)内部,字符串`String`实际上是一个`char[]`,每个`char...

    Java常用类与基础API-String的构造器与常用方法

    - 通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 `String`。需要注意的是,使用默认字符集可能在处理多字节字符时导致问题。 - `public String(byte[] bytes, String charsetName)`: - 通过使用...

    Java中String类的方法及说明.doc

    在Java编程语言中,String类是一个非常基础且重要的类,它代表不可变的字符序列。String类提供了多种方法,使得开发者能够方便地处理字符串。以下是对标题和描述中提到的Java String类方法的详细说明: 1. **构造...

    java语言如何实现GB2312编码.docx

    现代的Java环境通常会自动处理各种字符编码,但在某些情况下,比如与老式系统的交互或处理特定格式的数据时,手动编码和解码可能会成为必要的步骤。通过以上的Java实现,我们可以更好地理解GB2312编码的内部工作原理...

    java c++ 通信之间的乱码解决方法

    在Java中,可以使用`getBytes`和`new String`配合指定编码进行转换;在C++中,通常需要手动处理编码转换,可能需要用到第三方库如iconv等。 总之,Java和C++通过Socket通信时,要确保双方对字符编码的一致性,避免...

Global site tag (gtag.js) - Google Analytics