java字符集重组,字符集Charset 编码和解码

字符集在将字节与字符之间进行转换时起到编码和解码的作用。不同的字符集在转换时采取不同的方式。比如UTF-8是8位Unicode转换格式(一个字符=一个字节),UTF-16是16位Unicode转换格式(一个字符=两个字节)。无论如何,字节是机器的语言,字符才是人类的语言。

?

举例:

class="java">package stream;

import java.nio.ByteBuffer;

import java.nio.CharBuffer;

import java.nio.charset.Charset;

import java.util.Set;

import java.util.SortedMap;

public class CharsetTest {

/**

* @param args

*/

public static void main(String[] args) {

// 打印JVM 使用的默认字符集。修改默认字符集可以通过eclipse右键点项目选择properties->Resources里面改。

System.out.println("Default charset is:"

+ System.getProperty("file.encoding"));

// 打印所有可用的字符集

SortedMap sm = Charset.availableCharsets();

Set keyset = sm.keySet();

System.out.println("All available charsets:");

for (String s : keyset) {

System.out.println(s);

}

// 使用字符集

String s = "Hello World";

Charset cs_utf16 = Charset.forName("UTF-16");

// 编码(字符->字节)

ByteBuffer bb = cs_utf16.encode(s);

byte[] byteArray = bb.array();

// 将编码后的字节数组再解码(字节->字符),使用与编码同样的字符集才可以。

ByteBuffer bb2 = ByteBuffer.wrap(byteArray);

CharBuffer cb = cs_utf16.decode(bb2);

System.out.println(cb.toString());

}

}

?

java.nio.charset.Charset 1.4

static SortedMap availableCharsets()

获取这个虚拟机可用的所有字符集。返回一个映射表,它的键是字符集的名字,值是字符集。

static Charset forName()

获取给定名字的字符集。

Set aliases()

返回这个字符集的别名集。

ByteBuffer encode(String str)

将给定的字符串编码为字节序列。

CharBuffer decode(ByteBuffer buffer)

解码给定的字节序列。无法识别的输入将被转换为

Unicode的“替代字符”('\uFFFD').

?

java.nio.ByteBuffer 1.4

byte[] array()

返回这个字节缓冲区所管理的字节数组。

ByteBuffer wrap(byte[] bytes)

返回字节缓冲区,并且该缓冲区包含该字节数组。

ByteBuffer wrap(byte[] bytes, int offset, int length)

返回给定范围的字节数组的字节缓冲区。

?

java.nio.CharBuffer

char[] array()

返回这个缓冲区所管理的码元数组。

char charAt(int index)

返回给定索引处的码元。

String toString()

返回这个缓冲区管理的码元数组组成的字符串。

?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值