import java.io.UnsupportedEncodingException;
public class Test {
// 发代码之前先转段预备知识
//
// 计算机处理汉字信息的前提条件是对每个汉字进行编码,这些编码统称为汉字编码。汉字信息在系统内传送的过程就是汉字编码转换的过程。
// 汉字交换码:汉字信息处理系统之间或通信系统之间传输信息时,对每一个汉字所规定的统一编码,我国已指定汉字交换码的国家标准“信息交换用汉字编码字符集——基本集”,代号为GB
// 2312—80,又称为“国标码”。
// 国标码:所有汉字编码都应该遵循这一标准,汉字机内码的编码、汉字字库的设计、汉字输入码的转换、输出设备的汉字地址码等,都以此标准为基础。GB
// 2312—80就是国标码。该码规定:一个汉字用两个字节表示,每个字节只有7位,与ASCII码相似。
// 区位码:将GB
// 2312—80的全部字符集组成一个94×94的方阵,每一行称为一个“区”,编号为0l~94;每一列称为一个“位”,编号为0l~94,这样得到GB
// 2312—80的区位图,用区位图的位置来表示的汉字编码,称为区位码。
// 机内码:为了避免ASCII码和国标码同时使用时产生二义性问题,大部分汉字系统都采用将国标码每个字节高位置1作为汉字机内码。这样既解决了汉字机内码与西文机内码之间的二义性,又使汉字机内码与国标码具有极简单的对应关系。
// 汉字机内码、国标码和区位码三者之间的关系为:区位码(十进制)的两个字节分别转换为十六进制后加20H得到对应的国标码;机内码是汉字交换码(国标码)两个字节的最高位分别加1,即汉字交换码(国标码)的两个字节分别加80H得到对应的机内码;区位码(十进制)的两个字节分别转换为十六进制后加A0H得到对应的机内码。
public String bytes2HexString(byte b) {
return bytes2HexString(new byte[] { b });
}
// 汉字转换成区位码
public String bytes2HexString(byte[] b) {
String ret = "";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
ret += hex.toUpperCase();
}
return ret;
}
// 汉字转换成区位码
public String getString(String chinese) {
byte[] bs;
String s = "";
try {
bs = chinese.getBytes("GB2312");
for (int i = 0; i < bs.length; i++) {
int a = Integer.parseInt(bytes2HexString(bs[i]), 16);
s += (a - 0x80 - 0x20) + "";
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return s;
}
// 区位码转换成汉字
public String CodeToChinese(String code) {
String Chinese = "";
for (int i = 0; i < code.length(); i += 4) {
byte[] bytes = new byte[2];
String lowCode = code.substring(i, i + 2);
int tempLow = Integer.parseInt(lowCode);
tempLow += 160;
bytes[0] = (byte) tempLow;
String highCode = code.substring(i + 2, i + 4);
int tempHigh = Integer.parseInt(highCode);
tempHigh += 160;
bytes[1] = (byte) tempHigh;
String chara = new String(bytes);
Chinese += chara;
}
return Chinese;
}
// 测试
public static void main(String[] args) throws Exception {
String str = "创";
Test test = new Test();
String s = test.getString(str);
System.out.println(s);
String a = test.CodeToChinese(s);
System.out.println(a);
}
}
分享到:
- 2008-09-20 11:05
- 浏览 1750
- 评论(2)
- 论坛回复 / 浏览 (2 / 6488)
- 查看更多
相关推荐
汉字区位码汉字区位码汉字区位码汉字区位码汉字区位码汉字区位码汉字区位码汉字区位码
查询汉字区位码查询汉字区位码查询汉字区位码查询汉字区位码查询汉字区位码查询汉字区位码查询汉字区位码
现在的考试很多,公务员考试,职称等级考试等都需要用区位码填写考生的相关信息。为了让考生尽快查到自己信息的区位码,特编写本程序,欢迎下载使用与批评建议!
汉字区位码表 汉字区位码表 汉字区位码表
汉字姓名区位码 可以找出汉字对应的区位码 好多地方用得到
就这么一个区位码、。一些特殊的操作系统录入汉字的时候会用到汉字区位码。具体怎么用。你应该会吧
汉字区位码查询系统,简单,方便,好用………………
汉字区位码共收汉字6763个,分成两级。第一级汉字3755个,置于16区至55区;第二级汉字3008个,置于56区至87区。 第一级汉字按汉语拼音字母顺序排列,同音字以笔形顺序横、直、撇、点、抓为序;起笔相同按第二笔顺序...
educoder汉字国标码转区位码实验hust,仅是通过测试的完成文件.在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成国标码转区位码的子电路设计。其中输入引脚为16位的 GB2312 双字节国标码;
区位码查询区位码查询区位码查询区位码查询区位码查询区位码查询区位码查询
第1关:汉字国标码转区位码实验.txt
国际标准汉字区位码。区位码
区位码查询区位码查询区位码查询区位码查询
易语言汉字区位码列表源码,汉字区位码列表,写表头,填表,取区位码,取机内码,取国标码
这个是用来查询汉字的区位码的,好像是华为提供的!!
此项目的功能包括区位码与汉字之间的相互转换,随机产生区位码并将生成的区位码转换成字符,资源中还包括:区位码和字符的十进制对照表盒十六进制对照表,区位码的转换算法。
修正第一版不能转换单个汉字的问题;增加错误验证机制并即时提示;区位码转换实现了自动化无需再按转换...支持汉字句子批量转换为区位码,也支持区位码批量转换为汉字,这可是很多现有的区位码查询工具所没有的功能哦!
可以方便地进行汉字的区位码查询,在高考时特有用..不用再对照那个表一个个查了,呵呵....
如何取得汉字的区位码 VB技术很实用的源码本人精心收集的VB源码,绝对实用,有问题联系QQ:353502250
比较实用的介绍了汉字的区位码、国标码、机内码之间的转换和求解。