字符集Charset 编码和解码_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 字符集Charset 编码和解码

字符集Charset 编码和解码

 2015/1/28 15:46:16  小熊座  程序员俱乐部  我要评论(0)
  • 摘要:字符集在将字节与字符之间进行转换时起到编码和解码的作用。不同的字符集在转换时采取不同的方式。比如UTF-8是8位Unicode转换格式(一个字符=一个字节),UTF-16是16位Unicode转换格式(一个字符=两个字节)。无论如何,字节是机器的语言,字符才是人类的语言。举例:packagestream;importjava.nio.ByteBuffer;importjava.nio.CharBuffer;importjava.nio.charset.Charset;importjava
  • 标签:编码

字符集在将字节与字符之间进行转换时起到编码和解码的作用。不同的字符集在转换时采取不同的方式。比如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<String, Charset> sm = Charset.availableCharsets();
		Set<String> 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());
	}

}

?

?常用API:

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() 返回这个缓冲区管理的码元数组组成的字符串。

?

发表评论
用户名: 匿名