JavaScript汉字Unicode编码相互转换

J avaScript 汉字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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值