Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29313775
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Java

2010-03-18 23:20:13

Java基础学习之char

[整理人:遥方 整理时间:2010-3-18]

一、字节与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)'\u00c4',(byte)'\u00e3'};   //
字节
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]));
}
结果是什么?0x4f60

 

很多中文问题就是从这两个最简单的类派生出来的。而却有很多类不直接支持把encoding输入,这给我们带来诸多不便。很多程序难得用encoding 了,直接用defaultencoding,这就给我们移植带来了很多困难。

 

二、stringbyte[]

string其实核心是char[],      //是一家

然而要把byte转化成string,必须经过编码。string.length()其实就是char 组的长度,如果使用不同的编码,很可能会错分,造成散字和乱码。

 

char java中是2个字节。java采用unicode2个字节(16位)来表示一个字符。

char a = 's';

 

 

 

补充:

PSunicode简介

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码[utf-8 gbk 这些都是字符编码]。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨 平台进行文本转换、处理的要求。

JAVA内核是unicode的。就是为了实现跨语言平台。

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的 数字。 UTF-16UTF-32都是将数字转换到程序数据的编码方案。

(我们说的这个页面使用UTF-8编码:其含义就是说使用UTF-8的格式把计算机内部的数字给编码出来形成人们可读的内容)

Unicode中:汉字对应的数字是23383。在Unicode中,我们有很多方式将数字23383表示成程序中的数据,包括:UTF-8 UTF-16UTF-32UTF“UCS Transformation Format”的缩写,可以翻译成Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。例如,汉字对应的数字是 0x6c490x5b57,而编码的程序数据是:

  BYTE data_utf8[] = {0xE6, 0xB1, 0x89, 0xE5, 0xAD, 0x97}; // UTF-8编码

  WORD data_utf16[] = {0x6c49, 0x5b57}; // UTF-16编码

  DWORD data_utf32[] = {0x6c49, 0x5b57}; // UTF-32编码






二:字符串与字符数组之间的转换代码

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]);

       }

将字符串转换成字符数组



阅读(634) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~