BBS水木清华站∶精华区
发信人: intranetworm (小虫), 信区: Java
标 题: Unicode 汉字与GB内码的转换
发信站: BBS 水木清华站 (Wed Aug 27 13:44:45 1997)
这是我编的一个转换程序,使用时现将前面的码表存成文件,例如table.txt
创建一个GBUnicode实例,new GBUnicode("table.txt")
以后调用GB2Uni和Uni2GB作内码转换.注意GB内码是用两个字节表示的.
import java.io.*;
import java.util.Hashtable;
class GBUnicode{
byte high[]=new byte[6763],low[]=new byte[6763];
char unichar[]=new char[6763];
Hashtable UniGB;
public GBUnicode(String table_file)throws IOException
{
//BufferedInputStream tables=new BufferedInputStream (new FileInputStream(table_file));
DataInputStream tables=new DataInputStream (new FileInputStream(table_file));
int i,n=0;
byte b,bl,bh,num[]=new byte[20];
UniGB=new Hashtable(7000,1);
while (n<6763 ){
do{
bh=(byte)tables.read();
}while ((char)bh<=' '); //find first non-blank char
bl=(byte)tables.read();
high[n]=bh;
low[n]=bl;
do{
b=(byte)tables.read();
}while (b!=(byte)':'); //find ':'
do{
b=(byte)tables.read();
}while ((char)b<=' '); //find next non-blank char to read as number
i=0;
while ((char)b>='0' && (char)b<='9'){
num[i++]=b;
b=(byte)tables.read();
}
unichar[n]=(char)Integer.parseInt(new String(num,0,0,i));
if (UniGB.get(new Character(unichar[n]))!= null)
System.out.println("Duplicated : "+unichar[n]);
UniGB.put(new Character(unichar[n]),new Integer(n));
n=n+1;
}
tables.close();
}
private int getGBindex(byte high,byte low){
int i,j;
i=high-(byte)0xb0;
j=low-(byte)0xa1;
if (i <39) {// L1 Chinese
if (j<0 || j>94)
return -1;
return (i*94+j);
}
else if (i==39) {//one of the last 89 L1 Chinese
if (j<0 || j>89)
return -1;
return (i*94+j);
}
else {//L2 Chinese
if (j<0 || j>94)
return -1;
return (i*94+j-5);
}
}
public byte[] Uni2GB(char unicode) {
Integer index=(Integer)UniGB.get(new Character(unicode));
if (index==null)
return null;
byte ch[]=new byte[2];
ch[0]=high[index.intValue()];
ch[1]=low[index.intValue()];
return ch;
}
public char GB2Uni(byte high, byte low) {
int index=getGBindex(high,low);
if (index ==-1) //not GB Chinese
return 0;
return(unichar[index]);
}
}
--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: organ.ncic.ac.c]
BBS水木清华站∶精华区
分享到:
相关推荐
总之,Unicode汉字内码表是中文信息化不可或缺的一部分,它不仅为计算机系统提供了处理汉字的标准方法,也为各种与中文相关的应用和服务提供了坚实的基础。通过掌握Unicode编码规则和使用方法,开发者和研究人员可以...
UNICODE码表在计算机领域内具有举足轻重的作用,它确保了文本在不同的设备和平台上能够准确无误地显示和处理。在此,通用规范汉字指的是在汉字书写系统中广泛使用的基本汉字字符集,其中包括一级字表、二级字表和三...
对于中文用户而言,Unicode的重要性不言而喻,它不仅确保了中文字符能在全球范围内被正确地显示和处理,还极大地促进了中文信息在互联网上的传播。 #### 常用汉字Unicode码表概述 本文提供的“最全的常用汉字...
1. **编码转换函数**:`mb_gbk2uni.c` 和 `mb_gbk2uni.h` 文件很可能包含了实现GBK到Unicode转换的函数。在C语言中,这样的函数可能使用位操作、查表等方式实现。例如,函数可能接收GBK编码的字节流,通过解析这两个...
本文将深入探讨“常用的中文Unicode码表”,这对于编程、文本处理以及跨平台的软件开发尤其重要。 Unicode码表是一个庞大的集合,包含了来自不同语言的大量字符。对于中文来说,Unicode 提供了大量汉字的编码,使得...
总的来说,"unicode转gbk码表"是理解和处理多语言文本数据时的重要工具,尤其是在中文环境下,它帮助我们在不同的编码系统之间建立起桥梁,促进了信息的交流和传播。理解和运用这些编码转换方法,对于任何涉及跨平台...
unicode汉字和拼音对照表,按照: 汉字 编码 拼音声标 拼音声调(声调在字母后)声调在拼音后 纯拼音 的格式排列。一共是20902个汉字编码范围是 U4e00 ~ U9fa5.
这个压缩包文件提供了超过2万条的汉字、拼音、首字母以及对应的Unicode码,这对于各种与汉字处理相关的应用开发具有极大的价值。下面我们将深入探讨这些知识点。 首先,汉字是中文的主要文字,它在计算机系统中需要...
这是常用汉字的Unicode码表,和传智播客视频中的一致,谢谢大家分享
本文将深入探讨"汉字 字库 内码表"这一主题,特别是针对"C系列中文机汉字字库内码表"的相关知识。 首先,我们要理解什么是“内码”。在计算机中,内码是字符集中的每个字符在内存中存储时所使用的二进制代码,它...
Unicode不仅能够覆盖所有汉字,还包括全球各地的其他文字,确保了信息在全球范围内的准确传递和交流。在现代信息技术领域,Unicode已经成为处理多语言文本的首选编码标准,无论是网页开发、数据库管理还是软件编程,...
GBK编码,又称为GB2312-80的扩展,是中国大陆广泛使用的汉字编码标准,它是基于ISO-8859-1(西文字符)的基础上扩展的,主要针对简体中文,包括了大部分的汉字和一些非汉字符。GBK使用2个字节来表示一个字符,最多...
2. **unicode转GBK码表.txt**:相反,这个文件提供了将Unicode编码转换为GBK编码的对应关系,每行包含一个Unicode字符及其GBK编码的两个字节。 3. **gb2unicode.txt**:这可能是用于实现GB2312到Unicode转换的源代码...
### 常用汉字的Unicode编码 #### 一、引言 在计算机科学与信息技术领域,字符编码是一项至关重要的技术,它确保了不同系统间文本数据的正确传输和显示。Unicode作为国际上广泛采用的一种字符编码标准,为每种语言...
本主题主要关注四种常见的字符编码标准:Unicode、GB18030、GB2312以及GBK,它们在中国汉字编码领域扮演着关键角色。 首先,Unicode是一个全球通用的字符集,它为世界上几乎所有的文字系统提供了唯一的数字表示,...
2. **Unicode**:Unicode是一种国际化的字符集,它试图为世界上所有语言的每个字符提供一个唯一的数字编码,以解决不同编码系统间的不兼容问题。Unicode分为多个版本,每个版本增加了一些新的字符。 3. **UTF-8编码...
3. **《Unicode汉字内码表(十进制).txt》**:内码通常指的是计算机内部存储和处理字符时使用的编码,与Unicode编码有所不同。尽管Unicode是国际标准,但不同的操作系统和编程环境可能会使用不同的内码实现。此文件...
在实际应用中,常见的汉字内码有GBK、BIG5、Unicode等,其中Unicode是一种国际通用的字符编码标准,包括了全世界大部分语言的文字,它采用16位或32位编码,能够覆盖更广泛的字符集,包括简体和繁体汉字。 汉字内码...
完整的Unicode码表 包括汉字、英文、藏文、泰米尔、日韩等各国语言编码。