原帖地址 http://topic.csdn.net/u/20080527/01/94ab8eea-a826-4dbc-8e52-61abfc1db722.html?seed=984059254
string str = "\\u5f00\\u53d1\\u8bed\\u8a00";等同与@"\u5f00\u53d1\u8bed\u8a00"(这个表达式是从webservice获取的字符串)如何把str 转换为 "\u5f00\u53d1\u8bed\u8a00";(这个表达式是正确的,表示unicode编码)由于反斜杠是转义字符,汗颜,不知道如何操作原帖很多朋友提出了几种方案,其实提问之前都试过,不行的
比如:string strNew = str.Replace(@"\\", @"\");  是错误的,因为如果是@"\\" 代表了"\\\\"
"\\u5f00\\u53d1\\u8bed\\u8a00" 等价于@"\u5f00\u53d1\u8bed\u8a00"注意,str是从webservice抓取的字符串,也就是说不可能实现定义如: str=@"\u5f00\u53d1\u8bed\u8a00" 

解决方案 »

  1.   

    string strNew = str.Replace("\\", "\");  
      

  2.   

    string str = "\\u5f00\\u53d1\\u8bed\\u8a00";  string strNew = str.Replace(@"\\", @"\"); 
    Response.Write(strNew);
      

  3.   

    to:3楼,你试试,不行的,输出的应该是汉字的UNICODE编码
    问题的实质是将第一个字符串转换为UNICODE编码的表现形
      

  4.   

    你取得的是str = "\\u5f00\\u53d1\\u8bed\\u8a00";  这个你想转换成 str = "\u5f00\u53d1\u8bed\u8a00";这样?
    然后呢?
      

  5.   

    不就是要把上面的unicode编码的str转成字符吗.string str = "\\u5f00\\u53d1\\u8bed\\u8a00";
    string gbstr="";
    string[] Temp = str.Split(new Char[] { '\\' });  
    for(i=0;i<Temp.Length;i++)
    {
    byte[] unicodeBytes = System.Text.Encoding.Unicode.GetBytes(Temp[i]); 
    string tstr =System.Text.Encoding.GetEncoding("GB2312").GetString(unicodeBytes);
    gbstr=gbstr+tstr;
    }
      

  6.   

    class Test
    {
      static void Main()
      {
        string str  = @"\x41 B C \r\n\u5f00\u53d1\u8bed\u8a00aa"; 
        string str1 = System.Text.RegularExpressions.Regex.Unescape(str);
        System.Console.WriteLine("[{0}] -> [{1}]", str, str1);
      }
    }
    /* 程序输出:
    [\x41 B C \r\n\u5f00\u53d1\u8bed\u8a00aa] -> [A B C 
    开发语言aa]
    */