|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点 前段工夫,在所介入的项目中碰到了一个unicode与gb之间转码失利的成绩,一些不经常使用汉字的编码都被转成了“??”,这些汉字没有显现出来,因而本人对相干的成绩做了一些研讨并终极使成绩得以办理。如今就分离后面两篇的unicode与GB方面的基础道理,先容这类制造GBK-Unicode编码对比表的办法。
Java的字符串String类功效壮大,不仅能举行一些基础的字符串操纵,还能够依据必要机关指定字符集的字符串,本文所先容的办法恰是利了这一点,这类办法的基础思绪是:
1、遍历GBK编码表中的一切汉字,利用该字的GB编码机关一个字符串。GBK编码表中各部分的汉字分块对照划一,很简单遍历。
2、利用getBytes()办法获得该字符的字节数组,因为Java是用unicode来暗示字符的,以是此汉字的unicode就在个中。
以下是一段示例代码:
{
intcount=0;
for(intsegIndex=0xb0;segIndex<=0xf7;segIndex++){
for(intcharIndex=0xa1;charIndex<=0xfe;charIndex++){
byte[]gbkBytes=newbyte[]{(byte)(segIndex),(byte)charIndex};
byte[]unicodeBytes;
Stringstr=newString(gbkBytes,"GBK");
unicodeBytes=str.getBytes("unicode");
if(unicodeBytes.length==4){
count++;
Stringbuffer="";
for(inti=0;i<gbkBytes.length;i++)
buffer+=(int)(0x00ff&gbkBytes[i])+"";
for(inti=3;i>1;i--)
buffer+=(int)(0x00ff&unicodeBytes[i])+"";
buffer+="";
osw.write(buffer);
}
}
}
} 这一段是对GBK/2区的汉字举行遍历并处置的代码,GBK/2区的首字节局限在[0xb0,0xf7],尾字节局限在[0xa1,0xfe],在机关字符串时利用的字符集为GBK:
Stringstr=newString(gbkBytes,"GBK");
在利用getBytes()获得的字节数组中会有四个元素,前两个不知是做甚么用的,大概与字符串自己的布局有关,接上去的两个字节才是真实的unicode码。但这两个字节是倒序的,要从最初一个字节入手下手取,之以是如许是与big_endian和little_endian有关的,这里未几说。
当每次内层轮回停止时,buffer字符串中前两个数字就是一个GB码,前面两个数字就是一个unicode码,把它写到文件中就好了。
如许的文件失掉以后,再在别的的程序中载进文件,把Unicode值装进数组,以GB码为索引,就能够很便利地由GB码查得Unicode码。
JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。 |
|