C#,JavaScript 汉字转换为Unicode编码 Unicode编码转换为汉字

JavaScript库

+展开

-JavaScript

var GB2312UnicodeConverter={

ToUnicode:function(str){

return escape(str).toLocaleLowerCase().replace(/%u/gi,'\\u');

}

,ToGB2312:function(str){

return unescape(str.replace(/\\u/gi,'%u'));

}

};

测试代码

+展开

-HTML

<html><head><meta http-equiv="content-type" content="text/html" /></head><body><script>

var GB2312UnicodeConverter={

ToUnicode:function(str){

return escape(str).toLocaleLowerCase().replace(/%u/gi,'\\u');

}

,ToGB2312:function(str){

return unescape(str.replace(/\\u/gi,'%u'));

}

};

//=============测试代码

var str='上海',unicode;

document.write(str+'<br/>');

unicode=GB2312UnicodeConverter.ToUnicode(str);

document.write('汉字转换为Unicode代码:'+unicode+'<br/><br/>');

document.write('Unicode代码转换为汉字:'+GB2312UnicodeConverter.ToGB2312(unicode));

</script> </body></html>

关键字:C# 汉字转换为Unicode编码 Unicode编码转换为汉字

  Unicode和汉字编码小知识

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

  下面是C#汉字Unicode编码相互转换代码。

+展开

-C#

using System;

using System.Text;

using System.Text.RegularExpressions;

using System.Globalization;

public class GB2312UnicodeConverter

{

/// <summary>

/// 汉字转换为Unicode编码

/// </summary>

/// <param name="str">要编码的汉字字符串</param>

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

public static string ToUnicode(string str)

{

byte[] bts = Encoding.Unicode.GetBytes(str);

string r = "";

for (int i = 0; i < bts.Length; i += 2) r += "\\u" + bts[i + 1].ToString("x").PadLeft(2, '0') + bts[i].ToString("x").PadLeft(2, '0');

return r;

}

/// <summary>

/// 将Unicode编码转换为汉字字符串

/// </summary>

/// <param name="str">Unicode编码字符串</param>

/// <returns>汉字字符串</returns>

public static string ToGB2312(string str)

{

string r = "";

MatchCollection mc = Regex.Matches(str, @"\\u([\w]{2})([\w]{2})", RegexOptions.Compiled | RegexOptions.IgnoreCase);

byte[] bts = new byte[2];

foreach(Match m in mc )

{

bts[0] = (byte)int.Parse(m.Groups[2].Value, NumberStyles.HexNumber);

bts[1] = (byte)int.Parse(m.Groups[1].Value, NumberStyles.HexNumber);

r += Encoding.Unicode.GetString(bts);

}

return r;

}

}

相关文章:

C#汉字Unicode编码相互转换