传值使用Server.UrlEncode()
取值使用Server.UrlDecode()

解决方案 »

  1.   

    用utf-8编码,传值时有汉字时用Server.UrlEncode或HttpUtility.UrlEncode()试试,不用用gb2312
      

  2.   

    你在a.shtml 加入
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      

  3.   

    <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
      

  4.   

    前台传值 :escape(“XXXX”)后台取值 :Server.UrlDecode("XXXX")
      

  5.   

    看a.shtml 的编码
    不是gb2312加上
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      

  6.   

    和java不同,vs默认的文件编码以及程序处理都是使用utf-8,所以.net几乎是不可能出现乱码的。 
    如果出现乱码一定是程序员自找的。主要有以下几点:
    1、在web.config中设置默认编码为gb2312。(这一点真是害人害己,偶痛恨不已)
    2、cs/aspx/htm/js/css等文件不是使用vs创建的 (果真如此,应使用记事本打开,修改一下,例如加个空格,再点击另存为, 编码选择utf-8)
    3、使用IO类读或写时没有设定编码为utf-8 (StreamWriter streamWriter = new StreamWriter(@"c:\a.txt",false,Encoding.UTF8);)
      

  7.   

    我现在在a.shtml 和b.aspx中都已经加上了<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />,问题是我在传值进行处理的时候shtml页面不能支持Server.UrlEncode或HttpUtility.UrlEncode()方法,所以在传值前进行处理是不太现实的,至于escape(“XXXX”) 
    我没有试过。我在试试
      

  8.   

    这个问题我也遇到过,统一用utf-8编码,就什么问题都没了