java+ascii+汉字编码_java ------- I/O (三) 了解编码
时间: 2023-10-04 08:12:01 浏览: 49
Java 中的编码是指将字符集中的字符映射成字节序列的规则。Java 中常见的字符集有 ASCII、ISO-8859-1、GB2312、GBK、UTF-8 等。
ASCII 码是使用 7 位二进制数表示 128 个字符,包括 0-9、A-Z、a-z、以及一些特殊字符,如空格、换行符、回车符等。在 Java 中使用 ASCII 码可以通过将 char 类型强制转换为 byte 类型来实现。
ISO-8859-1 是欧洲语言的字符集,使用 8 位二进制数表示 256 个字符,包括 ASCII 码中的所有字符以及一些欧洲语言的特殊字符。在 Java 中使用 ISO-8859-1 可以直接将 char 类型强制转换为 byte 类型。
GB2312 是国家标准简体中文字符集,使用 2 个字节表示一个字符,包括 6763 个常用汉字和其他符号。GBK 是 GB2312 的扩展字符集,包括更多的汉字和符号。在 Java 中使用 GB2312 和 GBK 可以通过将 String 类型转换为 byte 类型来实现。
UTF-8 是一种可变长度的 Unicode 编码,使用 1-4 个字节表示一个字符,包括全球范围内所有的字符。在 Java 中使用 UTF-8 可以通过将 String 类型转换为 byte 类型来实现。
了解编码可以帮助我们正确地读写文件、处理网络数据等,避免出现乱码等问题。
相关问题
Java中ASCII码与汉字之间的转换
Java 中可以使用 `String` 类的构造函数和相关方法来进行 ASCII 码和汉字之间的转换。
将汉字转换成 ASCII 码:
```java
String str = "汉字";
byte[] bytes = str.getBytes("GB2312");
for (int i = 0; i < bytes.length; i++) {
System.out.print(bytes[i] + " ");
}
```
将 ASCII 码转换成汉字:
```java
byte[] bytes = {72, 101, 108, 108, 111};
String str = new String(bytes, "ASCII");
System.out.println(str);
```
需要注意的是,对于汉字转 ASCII 码,需要指定编码方式,一般情况下可以使用 GB2312 编码。而对于 ASCII 码转汉字,则需要指定字符集为 ASCII。
java写Demo验证汉字编码不同长度不同,并写出分析
在 Java 中,汉字的编码方式一般有两种,分别是 GB2312 和 UTF-8,其中 GB2312 编码方式是定长编码,每个汉字占用两个字节,而 UTF-8 编码方式是变长编码,一个汉字可能占用 3 个或 4 个字节。
下面是一个简单的 Java 程序,用于验证汉字编码不同长度不同的情况:
```java
public class ChineseEncodingDemo {
public static void main(String[] args) throws UnsupportedEncodingException {
String s1 = "你好世界"; // GB2312 编码
String s2 = "你好世界"; // UTF-8 编码
System.out.println("s1 长度:" + s1.getBytes("GB2312").length);
System.out.println("s2 长度:" + s2.getBytes("UTF-8").length);
}
}
```
输出结果为:
```
s1 长度:10
s2 长度:12
```
可以看到,使用 GB2312 编码时,每个汉字都占用两个字节,因此字符串 "你好世界" 的长度为 10。而使用 UTF-8 编码时,一个汉字可能占用 3 个或 4 个字节,因此字符串 "你好世界" 的长度为 12。
需要注意的是,在使用 UTF-8 编码时,如果字符串中只包含 ASCII 字符,则每个字符占用一个字节;而如果字符串中包含汉字等非 ASCII 字符,则每个字符占用的字节数可能不同。因此,在使用 UTF-8 编码时,字符串的长度需要根据实际情况进行计算。