原帖地址 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"
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"
Response.Write(strNew);
问题的实质是将第一个字符串转换为UNICODE编码的表现形
然后呢?
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;
}
{
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]
*/