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与二进制、八进制、十进制以及十六进制之间的转换。 首先,我们要了解进制的概念。进制是一种数字系统,它使用一组符号来表示数值。最常见的有二进制(base-2)、八进制(base-8...
总之,Java中的字符编码是一个复杂的主题,涉及Unicode、编码解码、I/O流的使用以及字符串处理等多个方面。了解这些知识对于编写跨平台、支持多语言的程序至关重要。通过深入学习和实践,开发者可以更好地处理各种...
本篇文章将详细介绍几种常见的编码解码方式,包括Hex编码、Base64编码以及URL编码,并提供一个集成Apache Commons Codec、Commons Lang和Java JDK的实用工具类`EncodeUtils`。 ### 1. Hex编码与解码 Hex编码是一种...
### Java中String类的常用方法详解 在Java编程语言中,`String` 类是一个非常重要的类,用于表示不可变的字符序列。它提供了丰富的内置方法,使得开发人员能够轻松地处理字符串相关的操作。本文将详细介绍Java中`...
在Java中,字符(`char`)与字节(`byte`)之间的转换是通过编码器(encoder)和解码器(decoder)完成的。Sun公司的标准库中提供了`sun.io.ByteToCharConverter`类,用于实现不同编码间的转换。例如,从GB2312编码...
Java中的String类是Java语言中最基础且至关重要的类之一,它代表不可变的字符序列。在Java中,字符串被广泛用于各种数据处理和文本操作。本文将深入探讨String类的一些关键方法及其用法。 首先,让我们看看String类...
接下来,我们来介绍Java中实现Base64编码与String字符串的相互转换的方法。Java提供了多种实现Base64编码的方式,例如使用Apache Commons Codec库、Java 8的java.util.Base64类等。 在Java中,可以使用Apache ...
让我们深入探讨Java中的字符编码和解码以及可能在`Escape.java`中涉及的相关概念。 1. **字符编码**: - **Unicode**:Java使用Unicode作为其内部字符集,这意味着它可以处理世界上几乎所有的字符。Unicode是一个...
Java中的`String`类是编程中最常用的数据类型之一,它代表不可变的字符序列。`String`类在Java中提供了大量的构造方法和方法,用于创建、操作和比较字符串。以下是一些关键的知识点: 1. **构造方法**: - `String...
在Java中,字符主要通过`char`、`byte`和`String`三种类型来表示。`char`是Unicode字符,占据16位,可以表示大部分世界语言的字符。`byte`用于在网络传输和存储中表示字节序列。`String`是由`char`组成的数组,它在...
在C#编程中,字符串(string)与字节(byte[])之间的转换是常见的操作,特别是在处理网络传输、文件存储或数据解析时。本文将详细讲解C#中如何进行这两种类型之间的转换,并提供一些实用的方法。 首先,我们来看如何将...
{* DELPHI、PHP、C#通用DES编码解码单元 *} {* 由TurboPower LockBox部分代码改写 *} {* 滕州市东鸣软件工作室制作 ZWF 2011-12-27 *} {*********************************************************} {EncryDes为...
在C#编程语言中,字符串(string)与字节数组(byte[])之间的转换是常见的操作,特别是在处理网络通信、文件读写或数据编码解码等场景。本篇文章将详细探讨C#中如何实现这两种类型之间的转换,并提供实用的代码示例...
在Java中,所有的字符串都是基于Unicode编码的,Unicode是一种包含几乎世界上所有字符的标准编码,它保证了不同语言间的字符可以统一表示。在Java虚拟机(JVM)内部,字符串`String`实际上是一个`char[]`,每个`char...
- 通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 `String`。需要注意的是,使用默认字符集可能在处理多字节字符时导致问题。 - `public String(byte[] bytes, String charsetName)`: - 通过使用...
在Java编程语言中,String类是一个非常基础且重要的类,它代表不可变的字符序列。String类提供了多种方法,使得开发者能够方便地处理字符串。以下是对标题和描述中提到的Java String类方法的详细说明: 1. **构造...
现代的Java环境通常会自动处理各种字符编码,但在某些情况下,比如与老式系统的交互或处理特定格式的数据时,手动编码和解码可能会成为必要的步骤。通过以上的Java实现,我们可以更好地理解GB2312编码的内部工作原理...
在Java中,可以使用`getBytes`和`new String`配合指定编码进行转换;在C++中,通常需要手动处理编码转换,可能需要用到第三方库如iconv等。 总之,Java和C++通过Socket通信时,要确保双方对字符编码的一致性,避免...
综上所述,Java开发中的中文处理问题主要涉及字符编码的转换和设置,以及与数据库的兼容性。通过理解Unicode编码机制,正确设置编码参数,以及适时进行字符转换,可以有效地解决这些问题,确保中文信息在应用程序中...