CSDN博客

img lengfeng8866

用.NET获取汉字的区位码(c#)

发表于2004/9/25 8:57:00  609人阅读

分类: ASP.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
我们的大中国,是好在的一个家.

阅读全文
0 0

相关文章推荐

img
取 消
img