try在web.config里加一句: 
<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" /> 
因为 asp 默认中文编码是gb 而aspx是unicode

解决方案 »

  1.   

    多谢多谢!不过我连 web.config 都不懂, 刚学 asp.net.
      

  2.   

    最和能把 requestEncoding="gb2312" responseEncoding="gb2312"写到.aspx里面。
    或者 <META charset=gb2312"> 也不错。
    高手快说呀!
      

  3.   

    在程序同级或者根级里,建一个文件 web.txt 然后把下面代码原封copy进去,然后改名为文件web.config<?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        
      <system.web>    <!--  动态调试编译
              设置 compilation debug="true" 以启用 ASPX 调试。否则,将此值设置为
              false 将提高此应用程序的运行时性能。 
              设置 compilation debug="true" 以将调试符号(.pdb 信息)
              插入到编译页中。因为这将创建执行起来
              较慢的大文件,所以应该只在调试时将该值设置为 true,而在所有其他时候都设置为
              false。有关更多信息,请参考有关
              调试 ASP.NET 文件的文档。
        -->
        <compilation 
             defaultLanguage="c#"
             debug="false"
        />    <!--  自定义错误信息
              设置 customError 模式值可以控制应向
              用户显示用户友好错误信息而不是错误详细信息(包括堆栈跟踪信息):          “On”始终显示自定义(友好的)信息  
              “Off”始终显示详细的 ASP.NET 错误信息。
              “RemoteOnly”只对不在本地 Web 服务器上运行的
              用户显示自定义(友好的)信息。出于安全目的,建议使用此设置,以便
              不向远程客户端显示应用程序的详细信息。
        -->
        <customErrors 
        mode="RemoteOnly" 
        />     <!--  身份验证 
              此节设置应用程序的身份验证策略。可能的模式是“Windows”、“Forms”、
              “Passport”和“None”
        -->
        <authentication mode="Windows" />     <!--  应用程序级别跟踪记录
              应用程序级别跟踪在应用程序内为每一页启用跟踪日志输出。
              设置 trace enabled="true" 以启用应用程序跟踪记录。如果 pageOutput="true",则
              跟踪信息将显示在每一页的底部。否则,可以通过从 Web 应用程序
              根浏览 "trace.axd" 页来查看 
              应用程序跟踪日志。
        -->
        <trace
            enabled="false"
            requestLimit="10"
            pageOutput="false"
            traceMode="SortByTime"
    localOnly="true"
        />    <!--  会话状态设置
              默认情况下,ASP.NET 使用 cookie 标识哪些请求属于特定的会话。
              如果 cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。
             若要禁用 cookie,请设置 sessionState cookieless="true"。
        -->
        <sessionState 
                mode="InProc"
                stateConnectionString="tcpip=127.0.0.1:42424"
                sqlConnectionString="data source=127.0.0.1;user id=sa;password="
                cookieless="false" 
                timeout="20" 
        />    <!--  全球化
              此节设置应用程序的全球化设置。
        -->
        <globalization 
                requestEncoding="gb2312" 
                responseEncoding="gb2312" 
       />
       
     </system.web></configuration>
      

  4.   

    gasover(无尽):高手!大侠!果然能行!
    请问:
    1.web.config 只对 aspx 起作用吗? 会影响 asp 吗?
    2.当我要拿 web.config 出来改动时我得到错误信息:
    The type of page you have requested is not served because it has been explicitly forbidden. The extension '.config' may be incorrect.
    是否不让放 .config 文件呢?
      

  5.   

    高手, 大侠:还是有问题啊:在 .aspx 用了 
    requestEncoding="gb2312"  responseEncoding="gb2312"
    后能看到传来的中文了, 但实际上已变为 unicode. 我用 len() 查过了,一个汉字长度为1. 能让传来的中文保持为 gb 吗?
      

  6.   

    1、web.config 只影响asp.net2、requestEncoding="gb2312" 表示接受 Requset 对象 接受 的类型默认为gb,就像你asp中默认的response也是gb ,所以才能正常接受。如果你传给和接受的类型不同,那肯定是会乱码的。汉字编码原理是因为一个汉字是由两个大约值在 128~255 的,非ascii的字节.所以机器能很方便的识别出 "a"为 一个字符, "阿" 为一个汉字。 他们len(都该是一)我认为unicode 和 gb编码并没有本质的区别。只是对应的汉字区位不同。3、这个问题我以前也问过的是思归大哥叫我这样做的,所以不要叫我大侠。 :)
      

  7.   

    对了,那个config.web 应该简化一下,如果你不是用vs.net开发的话。<?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <system.web>
    <globalization
     fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" />
    </system.web>
    </configuration>  不过个人强烈建议慢慢学用vs.net
      

  8.   

    高手gasover(无尽):in asp, Len("你")=2, Asc(Mid("你",1,1))=196, Asc(Mid("你",2,1))=227in aspx, using
    <configuration>
    <system.web>
    <globalization requestEncoding="gb2312" responseEncoding="gb2312" />
    </system.web>
    </configuration>
    Len("你")=1, Asc(Mid("你",1,1))=63
      

  9.   

    應該是
    response.write(empty)
    不是
    response.wrtie("empty")
      

  10.   

    还有这样啊?这个你该请教别人了。你改成unicode len一下呢?
      

  11.   

    关于这个问题,我的经验是:
    1> 当 Web.config的 requestEncoding改为"gb2313"后,用asp.net 产生的表单,提交给一个asp程序,中文没有问题了,但是提交给一个asp.net又中文乱码.只好把所有的asp升到asp.net才行.