unicode to gb2312 转换

原创 2005年05月20日 20:23:00

  用reflector 反编译出来的代码中,中文变成乱糟糟的unicode,害我看得吃力啊!我只好把它们变过来喽!

用了下面一点代码,有我自己写的字符串分割方法,unicode to gb2312的转换函数。方法笨了点,但管用。

/// <summary>
  /// 将字符串分割成数组
  /// </summary>
  /// <param name="strSource"></param>
  /// <param name="strSplit"></param>
  /// <returns></returns>
  public string[] StringSplit(string strSource,string strSplit)
  {
   string[] strtmp = new string[1];
   int index = strSource.IndexOf(strSplit,0);
   if(index<0)
   {
    strtmp[0] = strSource;
    return strtmp;
   }
   else
   {
    strtmp[0] = strSource.Substring(0,index);
    return StringSplit(strSource.Substring(index+strSplit.Length),strSplit,strtmp);
   }
  }

  /// <summary>
  /// 采用递归将字符串分割成数组
  /// </summary>
  /// <param name="strSource"></param>
  /// <param name="strSplit"></param>
  /// <param name="attachArray"></param>
  /// <returns></returns>
  private string[] StringSplit(string strSource,string strSplit,string[] attachArray)
  {
   string[] strtmp = new string[attachArray.Length+1];
   attachArray.CopyTo(strtmp,0);

   int index = strSource.IndexOf(strSplit,0);
   if(index<0)
   {
    strtmp[attachArray.Length] = strSource;
    return strtmp;
   }
   else
   {
    strtmp[attachArray.Length] = strSource.Substring(0,index);
    return StringSplit(strSource.Substring(index+strSplit.Length),strSplit,strtmp);
   }   
  }

  /// <summary>
  /// 将Unicode转化为GB2312
  /// </summary>
  /// <param name="str"></param>
  /// <returns></returns>
  public string ConvertToGb2312(string str)
  {
   bool flag = false;
   string tmpSubString = string.Empty;
   string[] strArray = StringSplit(str,@"/u");

   char[] charArray = new char[strArray.Length];
   string ret=string.Empty;
   for(int i=0;i < strArray.Length;i++)
   {
    if(strArray[i].Length==0)
     continue;
    if(StringLength(strArray[i]) == 4 && strArray[i].Length == 4 && strArray[i].ToLower() == strArray[i])
    {
     try
     {
      charArray[i] = System.Convert.ToChar(System.Convert.ToInt32(strArray[i],16));
      ret += charArray[i].ToString();
      flag = true;
     }
     catch
     {
      ret += strArray[i];
      flag = false;
     }
    }
    else
    {
     if(flag && strArray[i].ToLower() == strArray[i])
     {
      try
      {
       tmpSubString = strArray[i].Substring(4);
       charArray[i] = System.Convert.ToChar(System.Convert.ToInt32(strArray[i].Substring(0,4),16));
       ret += charArray[i].ToString() + tmpSubString;
      }
      catch
      {
       ret += strArray[i];
      }
     }
     else
     {   
      ret += strArray[i];
     }
     flag = false;
    }
   }
   return ret;
  }

  public int StringLength(string str)
  {
   byte[] strArray=System.Text.Encoding.Default.GetBytes (str);
   int res=strArray.Length ;
   return res;
  }

Unicode to GB2312 or GBK table

  • 2015年08月24日 14:20
  • 6.53MB
  • 下载

二分法查找Unicode To GB2312转码表

博客重新开通,以作学习记录之用。   昨晚要写个C实现的Unicode到GB2312的转码程序,可是找了下网上现成的转码表数组多以GB2312码升序排列,而我只需要Unicode至GB2312的单向...

字符集之间转换(UTF-8,UNICODE,Gb2312)

 字符集之间转换(UTF-8,UNICODE,Gb2312)特搜集了UTF-8,UNICODE,Gb2312他们3个之间的相互转换.UTF-8:   1~3字节可变UNICODE: 2字节一个字符GB...

字符集之间转换(UTF-8,UNICODE,Gb2312)c++and java

UTF-8:   3字节一个字符 UNICODE: 2字节一个字符 GB2312:  1字节一个字符 例子: “你”字的UTF-8编码: E4 BD A0        1110010...

GB2312、UTF_8、UNICODE之间相互转换

// 把Unicode 转换成GB2312 void UnicodeToGB2312(char*pOut,WCHAR*uData) {      ::WideCharToMultiByte(CP_...

WindowsPhone的中文GB2312、GBK编码与Unicode相互转换

网上有高人做的GB2312与Unicode相互转换的类或者程序集,大家去找找看。但是GB2312是比较老的标准,覆盖汉字6763个和非汉字图形字符682个。不是太够用,只能用GBK(覆盖汉字21003...

UTF-8, Unicode, GB2312格式串转换之C语言版

int Utf8ToUnicode(void* pOutUnicode, int outBuffLen, char* pInUtf8, int utf8Bytes) {  int curPos = 0...

unicode与GB2312的相互转换(js)

上回说到,我们用C语言输出了一张GB2312的全部字符表……同时也说,有了这个,我们就能实现使用js进行unicode和GB2312之间的转码了……再加上前回(其实是几年之前)说到,用js没有内置函数...

&#x是什么编码以及转换方法(GB2312 UNICODE)

常在一些网站源码中看到&#x开头的内容,这是转化成unicode编码后的汉字,我找到了一种将这种编码转换成汉字的方法,记录在这里以便有人使用。将下面的代码复制出来保存成html格式,使用浏览器打开就可...

VC++版 Unicode ANSI UTF-8 GB2312 相互转换代码

void AnsiToUnicode(char *szAnsi,WCHAR * szWs) { //必须保证szWs有足够的空间 int len = ::MultiByteToWideChar(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unicode to gb2312 转换
举报原因:
原因补充:

(最多只允许输入30个字)