英文版windows+英文版VS1)
我要在ASP.NET的C#代码中获取上一页设置的cookie的值,在ASP.NET页面C#获得后出现,空格符后变成了%2乱码。例如,字符串“John Smith” 变成了 “John%2Smith”2)
  ASP 中的vb写入cookie,支持 带下划线的key名, 但为什么C#好像不支持带下划线_的键名呢? 例如:  asp的cookie: 
             Response.Cookies("QE_DATA")("user_id")= "John Smith"
           Response.Cookies("QEDATA")("user_id")= "John Smith"        C#中无法request到这个"QE_DATA"的值,但是可以request到“QEDATA”的值。
  
麻烦各位大哥指点。

解决方案 »

  1.   

    空格 在 asp.net中传递的时候被转义成2%了
      

  2.   

    地址栏传递应该没事的,取值时会解析过来的, 附上自己的网站 http://www.jgking.cn
      

  3.   

    空格转义了,取的时候再用replace替换回去
      

  4.   

    你应该使用编码, Server.UrlDecode,每次读取就解码,就行了
      

  5.   

    string str = System.Web.HttpUtility.HtmlDecode(your cookie value);
      

  6.   

               Server.HtmlEncode(str); // 存入前将你的字符串编码
                Server.HtmlDecode(str); // 取出来时候将你的字符串解码
      

  7.   

    1 在配置文件web.config里看是采用的哪种编码格式 做到存取页的编码格式统一
    如:
    <globalization 
       requestEncoding="gb2312" 
       responseEncoding="gb2312" 
    />2 如果是js给cookie赋的值 先设置js编码格式 如
    <script charset="gb2312" language="javascript"></script>
    (可能有的浏览器版本不支持这种用法)3 js中对cookie进行编解码 再在c#程序解码
    js:用 escape (编码) unescape(解码)
    c#:用Server.UrlEncode/UrlDecode方法 还有两个方法也可以拿来试试 Server.HtmlEncode/HtmlDecode
      

  8.   

    在webConfig里面这样配置: 
    <system.web> 
    <globalization   fileEncoding="gb2312"   requestEncoding="gb2312"   responseEncoding="gb2312"   culture="zh-CN"   uiCulture="zh-CN"/> 
    <!--   
                                    设置   compilation   debug="true"   将调试符号插入 
                            已编译的页面中。但由于这会   
                            影响性能,因此只在开发过程中将此值   
                            设置为   true。 
                    --> 
    <compilation   debug="true">  
     
     
      

  9.   

    Server.UrlEncode()
    Server.UrlDecode()
    注意编码和解码处理