目前我引用System.Web后 用的System.Web.HttpUtility.UrlDecode(str, Encoding.GetEncoding("UTF-8"));
 出现一个让我哭笑不得的问题 
 
 比如 "\u83dc\u7206\u4e86" 可以解出来 "菜爆了";
 但是以上字符出现在一个字符串中 ,我把它截取出来   
 用上面的解码方法不起作用, 还是显示"\u83dc\u7206\u4e86"  然后手动输入一个 "\u83dc\u7206\u4e86" 和 上面截取的字符串对比 结果是不一样。
  
  我很确定字符串是截取正确了的。  不知道是不是C#字符串的一些机制导致的?
  或者说谁有更好的办法啊   

解决方案 »

  1.   

    System.Web.HttpUtility.UrlDecode(str, Encoding.GetEncoding("gb2312"));
      

  2.   

    不行滴  不是UTF-8编码问题  
      

  3.   

    明显是你截取的方法不对
    把你的测试代码发出来,让大家看看&改正一下
      

  4.   

    UrlDecode是用来解码以%开头的编码字符串的,而不是这种\u开头的二进制。
    显然你用\u标识后,它自动认到了"菜爆了",那你还用得着去UrlDecode多此一举吗?
      

  5.   

    ?????? 
    楼上的意思我不太了解
      "\u83dc\u7206\u4e86"    
    用 System.Web.HttpUtility.UrlDecode(str, Encoding.GetEncoding("UTF-8"));解码出来的结果就是 “菜爆了”  那个 \u 标识 是什么意思?  这方面我都是网上看了现学现用的,了解的不深
      

  6.   

    我截取就是  用STRING 的 SUBSTRING() 去头去尾  剩下 \u83dc\u7206\u4e86 这段
      但就是 和 手动输入的 “\u83dc\u7206\u4e86” 不相等
      

  7.   

    你现在是想显示“\u83dc\u7206\u4e86”还是想显示“菜爆了”了呢?手动输入自然是显示“菜爆了”,除非你手动输入“\\u83dc\\u7206\\u4e86”
      

  8.   

    我想现实 “菜爆了”
      但是 我截取出来的东西  显示的是 “\u83dc\u7206\u4e86”  
      

  9.   

    你测试下下面的代码,照着写就可以了:                string tmp = "\\u83dc\\u7206\\u4e86";
                    string[] tmp1 = tmp.Split(new string[] { "\\u" }, StringSplitOptions.RemoveEmptyEntries);
                    List<char> tmp2 = new List<char>();
                    foreach (string s in tmp1)
                    {
                        tmp2.Add((char)Convert.ToInt16(s, 16));
                    }
                    MessageBox.Show(new string(tmp2.ToArray()));