str="\udb17\ue20c"
str1.equal(Encoding.Unicode.GetString(Encoding.Unicode.GetBytes(str))
返回值是错的。
为什么,str经过unicode编码好,再转换回来,竟然不相同。
这个本来是想解决我前一个帖子的问题的
http://topic.csdn.net/u/20090522/08/11669b93-fa71-462a-b639-9fd678164403.html?seed=865533679
可是不行。
望高手指教。

解决方案 »

  1.   

    //中文转为UNICODE字符string str = "中文";
                string outStr = "";
                if (!string.IsNullOrEmpty(str))
                {                
                    for (int i = 0; i < str.Length; i++)
                    {
                        //将中文字符转为10进制整数,然后转为16进制unicode字符
                        outStr += "\\u" + ((int)str[i]).ToString("x");
                    }
                }//UNICODE字符转为中文            string str = "\\u4e2d\\u6587";
                string outStr = "";
                if (!string.IsNullOrEmpty(str))
                {
                    string[] strlist = str.Replace("\\","").Split('u');
                    try
                    {
                        for (int i = 1; i < strlist.Length; i++)
                        {
                            //将unicode字符转为10进制整数,然后转为char中文字符
                            outStr += (char)int.Parse(strlist[i], System.Globalization.NumberStyles.HexNumber);
                        }
                    }
                    catch (FormatException ex)
                    {
                        outStr = ex.Message;
                    }
                }
      

  2.   

    给你一个可以直接成功转换的C#代码,比1楼的简单,当然1楼按字节转换也是不错的方法哦。            string str = "\udb17\ue20c";
                MessageBox.Show(str.Equals(Encoding.UTF7.GetString(Encoding.UTF7.GetBytes(str))).ToString());
      

  3.   

    //中文转为UNICODE字符 string str = "中文"; 
                string outStr = ""; 
                if (!string.IsNullOrEmpty(str)) 
                {                
                    for (int i = 0; i < str.Length; i++) 
                    { 
                        //将中文字符转为10进制整数,然后转为16进制unicode字符 
                        outStr += "\\u" + ((int)str[i]).ToString("x"); 
                    } 
                } 
    //UNICODE字符转为中文             string str = "\\u4e2d\\u6587"; 
                string outStr = ""; 
                if (!string.IsNullOrEmpty(str)) 
                { 
                    string[] strlist = str.Replace("\\","").Split('u'); 
                    try 
                    { 
                        for (int i = 1; i < strlist.Length; i++) 
                        { 
                            //将unicode字符转为10进制整数,然后转为char中文字符 
                            outStr += (char)int.Parse(strlist[i], System.Globalization.NumberStyles.HexNumber); 
                        } 
                    } 
                    catch (FormatException ex) 
                    { 
                        outStr = ex.Message; 
                    } 
                } 正解!!!!!!!!!!!!!!