全部博文(2065)
分类: Java
2010-03-18 23:20:13
Java基础学习之char
[整理人:遥方 整理时间:
一、字节与unicode
Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保 存方式是使用字节流的。因此Java要对这些字节流经行转化。 char是 unicode的,而byte是字节。Java中 byte/char互转的函数在sun.io的包中间有。
public static ByteToCharConverter getDefault();
public static ByteToCharConverter getConverter(String encoding);
如果你不指定converter,则系统会自动使用当前的encoding,gb平台上用gbk,en平台上用8859_1。
示例:
String encoding = "gb2312"; //使用gb2312
byte b[] = {(byte)'\u
ByteToCharConverter converter = ByteToCharConverter.getConverter(encoding); //用gb2312
char c[] = converter.convertAll(b);
//使用gb2312的方式 将字节转换成unicode符
for (int i = 0; i < c.length; i++) {
System.out.println(Integer.toHexString(c[i]));
}
结果是什么?0x
很多中文问题就是从这两个最简单的类派生出来的。而却有很多类不直接支持把encoding输入,这给我们带来诸多不便。很多程序难得用encoding
了,直接用default的encoding,这就给我们移植带来了很多困难。
二、string和byte[]
string其实核心是char[], //是一家
然而要把byte转化成string,必须经过编码。string.length()其实就是char数 组的长度,如果使用不同的编码,很可能会错分,造成散字和乱码。
char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。
char a = 's';
补充:
PS:unicode简介
Unicode(统
JAVA内核是unicode的。就是为了实现跨语言平台。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的 数字。、 UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
(我们说的这个页面使用UTF-8编码:其含义就是说使用UTF-8的格式把计算机内部的数字给编码出来形成人们可读的内容)
在Unicode中:汉字“字”对应的数字是23383。在Unicode中,我们有很多方式将数字23383表示成程序中的数据,包括:UTF-8、 UTF-16、UTF-32。UTF是“UCS Transformation Format”的缩写,可以翻译成Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。例如,“汉字”对应的数字是 0x
BYTE data_utf8[] = {0xE6, 0xB1,
0x89, 0xE5, 0xAD, 0x97}; // UTF-8编码
WORD data_utf16[] = {0x
DWORD data_utf32[] = {0x
二:字符串与字符数组之间的转换代码
char[]
charArray = {'c','b','a'};
String
string = new String(charArray);
FormatSystem.print(string);
以上字符数组转换成字符串。
String sa = "aaa";
char[] ass = sa.toCharArray();
for (int i = 0; i < ass.length; i++) {
System.out.println(ass[i]);
}
将字符串转换成字符数组