搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

用.NET获取汉字的区位码

首先复习一下计算机基础知识:

计算机中最底层的数据都是用二进制及0和1来表示的。每个0或1称作1位,第8位二进制数叫做1个字节,它可以表示ascii码中的一个字符。中文计算机中用两个字节即16位二进制来表示一个汉字。而在unicode编码中所有的符号(包括汉字,英文,标题及其它众多符号)都是为两字节(16)位来表示。

在system.text命名空间中包含众多编码的类,可供进行操作及转换,下面用两个实例来进行区位码及汉字之间的互换,希望能起到举一反三的效果,让大家可以轻松处理文字编码方面的问题:

using system;
using system.text;
class codingchange
{
public string charactertocoding(string character)
{
string coding = "";
for (int i = 0; i<character.length; i++ )
{
byte[] bytes = system.text.encoding.unicode.getbytes(character.substring(i,1)); //取出二进制编码内容
string lowcode = system.convert.tostring(bytes[0], 16); //取出低字节编码内容(两位16进制)
if (lowcode.length == 1)
lowcode = "0" + lowcode;
string hightcode = system.convert.tostring(bytes[1], 16);//取出高字节编码内容(两位16进制)
if (hightcode.length == 1)
hightcode = "0" + hightcode;
coding += (lowcode + hightcode);//加入到字符串中,
}
return coding;
}
public string codingtocharacter(string coding)
{
string characters = "";
if (coding.length % 4 != 0)//编码为16进制,必须为4的倍数。
{
throw new system.exception("编码格式不正确");
}
for (int i = 0; i<coding.length; i+=4 ) //每四位为一个汉字
{
byte[] bytes = new byte[2];
string lowcode = coding.substring(i, 2); //取出低字节,并以16进制进制转换
bytes[0] = system.convert.tobyte(lowcode, 16);
string highcode = coding.substring(i + 2, 2); //取出高字节,并以16进制进行转换
bytes[1] = system.convert.tobyte(highcode, 16);
string character = system.text.encoding.unicode.getstring(bytes);
characters += character;
}
return characters;
}
public static void main()
{
codingchange code = new codingchange();
string coding = code.charactertocoding("我们的大中国,是好在的一个家.");
console.writeline(coding);
console.writeline(code.codingtocharacter(coding));
}
};
最后输出的结果是:

c:\>test
1162ec4e847627592d4efd560cff2f667d5928578476004e2a4eb65b2e00
我们的大中国,是好在的一个家.

c:\>

()

相关文章:
© 2006   www.java-asp.net