字符串与Unicode编码互相转换

 将字符串转为unicode编码
 
public  static  String toUNICODE(String s)
     {
         StringBuilder sb= new  StringBuilder();
         for ( int  i= 0 ;i<s.length();i++)
         {
             if (s.charAt(i)<= 256 )
             {
                 sb.append( "\\u00" );
             }
             else
             {
                 sb.append( "\\u" );
             }
             sb.append(Integer.toHexString(s.charAt(i)));
         }
         return  sb.toString();
     }
 
 
 为了避免在浏览器中传输数据的时候出现中文乱码,我们可以将内容进行URL编码,当然也可以将内容进行UNICODE编码。将汉字进行UNICODE编码,如:“王”编码后就成了“\u738b”,UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256 以内的一个数字。而一个汉字是由两个字符组成,于是就很容易理解了,“738b”是两个字符,分别是“73”“8b”。但是在将UNICODE字符编码的内容转换为汉字的时候,字符是从后面向前处理的,所以,需要把字符按照顺序“8b”“73”进行组合得到汉字。下面是具体的转化代码。

将邮件列表中的名字(name)进行转换,转换后放回到邮件列表中(mails)

                        // 将UNICODE编码后的汉字转换回来,如: \u738b --> 王
                        MatchCollection mCollection2 = Regex.Matches(name, "([\\w]+)|(\\\\u([\\w]{4}))");
                        if (mCollection2 != null && mCollection2.Count > 0)
                        {
                            StringBuilder sb = new StringBuilder();
                            foreach (Match m2 in mCollection2)
                            {
                                string v = m2.Value;
                                if (v.StartsWith("\\u"))
                                {
                                    string word = v.Substring(2);
                                    byte[] codes = new byte[2];
                                    int code = System.Convert.ToInt32(word.Substring(0, 2), 16);
                                    int code2 = System.Convert.ToInt32(word.Substring(2), 16);
                                    codes[0] = (byte)code2;
                                    codes[1] = (byte)code;
                                    sb.Append(Encoding.Unicode.GetString(codes));
                                }
                                else
                                {
                                    sb.Append(v);
                                }
                            }
                            mails[i, 0] = sb.ToString();
                        }
                        else
                        {
                            mails[i, 0] = name;
                        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值