Standard charsets

Java 暂时支持如下的标准编码

  • US-ASCII: 7位ASCII字符。

  • ISO-8859-1: ISO拉丁字母

  • UTF-8:这是8位UCS转换格式。

  • UTF-16BE:这是16位UCS转换格式,字节顺序大

  • UTF-16LE:这是16位UCS变换,以字节顺序表示。

  • UTF-16: 16位UCS转换格式。

Charsets 的编码和解码

字符序列和字节序列的相互转换, 可以是用CharsetEncoder和CharsetDecoder实现。

  • CharsetDemo.java
  [java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CharsetEncoder; import java.nio.charset.StandardCharsets; public class CharsetDemo { public static void main(String[] args) throws CharacterCodingException { // 注意: StandardCharsets是jdk1.7添加的 Charset charset = StandardCharsets.UTF_8; // 从字符集中创建相应的编码和解码器 CharsetEncoder encoder = charset.newEncoder(); CharsetDecoder decoder = charset.newDecoder(); // 构造一个buffer CharBuffer charBuffer = CharBuffer.allocate(64); charBuffer.put('初'); charBuffer.put('次'); charBuffer.put('见'); charBuffer.put('面'); charBuffer.put(','); charBuffer.put('多'); charBuffer.put('多'); charBuffer.put('管'); charBuffer.put('照'); charBuffer.put('!'); charBuffer.flip(); // 将字符序列转换成字节序列 ByteBuffer bb = encoder.encode(charBuffer); while(bb.hasRemaining()) { System.out.print(bb.get() + " "); } System.out.println(); // 将字节序列转换成字符序列 bb.flip(); CharBuffer cb = decoder.decode(bb); System.out.println(cb); } }
  • 日志信息
  [plaintext]
1
2
-27 -120 -99 -26 -84 -95 -24 -89 -127 -23 -99 -94 44 -27 -92 -102 -27 -92 -102 -25 -82 -95 -25 -123 -89 33 初次见面,多多管照!

参考资料

https://www.programcreek.com/java-api-examples/java.nio.charset.Charset

https://www.concretepage.com/java/example-charset-java-nio

https://blog.csdn.net/voo00oov/article/details/45225161