好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

.Net(c#)汉字和Unicode编码互相转换实例

?

{ "Tilte" : "\u535a\u5ba2\u56ed" , "Href" : " http://HdhCmsTestzzvips测试数据 " }

经常遇到这样内容的json字符串,原来是把其中的汉字做了Unicode编码转换。

Unicode编码:

将汉字进行UNICODE编码,如:[王]编码后就成了[\王],UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256以内的一个数字。而一个汉字是由两个字符组成,于是就很容易理解了,[738b]是两个字符,分别是[73][8b]。但是在将 UNICODE字符编码的内容转换为汉字的时候,字符是从后面向前处理的,所以,需要把字符按照顺序[8b][73]进行组合得到汉字。

  Unicode/汉字互转实现:

?

/// <summary>

/// <summary>

/// 字符串转Unicode

/// </summary>

/// <param name="source">源字符串</param>

/// <returns>Unicode编码后的字符串</returns>

public static string String2Unicode( string source)

{

  byte [] bytes = Encoding.Unicode.GetBytes(source);

  StringBuilder stringBuilder = new StringBuilder();

  for ( int i = 0; i < bytes.Length; i += 2)

  {

   stringBuilder.AppendFormat( "\\u{0}{1}" , bytes[i + 1].ToString( "x" ).PadLeft(2, '0' ), bytes[i].ToString( "x" ).PadLeft(2, '0' ));

  }

  return stringBuilder.ToString();

}

 

/// <summary>

/// Unicode转字符串

/// </summary>

/// <param name="source">经过Unicode编码的字符串</param>

/// <returns>正常字符串</returns>

public static string Unicode2String( string source)

{

  return new Regex( @"\\u([0-9A-F]{4})" , RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace(

      source, x => string .Empty + Convert.ToChar(Convert.ToUInt16(x.Result( "$1" ), 16)));

}

以上这篇.Net(c#)汉字和Unicode编码互相转换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于.Net(c#)汉字和Unicode编码互相转换实例的详细内容...

  阅读:46次

上一篇: C# 泛型参数转换

下一篇:C# 泛型的约束