我在一个生成静态页面的程序中把 Response.Charset = "GB2312",
可是生成的页面时乱码,要在浏览器中设置“编码”-“Unicode(utf-8)”才可正常,有前辈告诉我只要:
“把web.config及每个aspx.regx的编码方式和每次输出保存的编码方式指定为GB2312即可”可是实在是新手,不知道具体要怎么做,开张贴请教一下各位前辈,谢谢

解决方案 »

  1.   

    try:web.config<globalization 
                requestEncoding="gb2312" 
                responseEncoding="gb2312" 
       />
      

  2.   

    另外还需要这样:写文件时的编码StreamWriter sw=new StreamWriter("c:\\Variables.htm", true, Encoding.GetEncoding("GB2312"));
      

  3.   

    <META http-equiv="Content-Type" content="text/html; charset=gb2312">
      

  4.   

    我的程序开始就已经设置为
     Dim tw As System.IO.StringWriter = New System.IO.StringWriter
            tw.Encoding.GetEncoding("GB2312")还是乱码现在加了
    <globalization 
                requestEncoding="gb2312" 
                responseEncoding="gb2312" 
       />也是一样
    谢谢前辈们
      

  5.   

    楼上的全说了^_^
    另外读写文件的 的编码一定要一样哦
    StreamReader fileStream = new StreamReader(Server.MapPath(ad_file1.ToString()), Encoding.GetEncoding("GB2312"));
    StreamWriter Writefile = new StreamWriter(Server.MapPath("ad/"+adid.ToString()+".js"),false, Encoding.GetEncoding("GB2312"));
      

  6.   

    三种方法都试了,还是出错,还是要在浏览器中设置“编码”-“Unicode(utf-8)”才可正常1)
    Dim tw As System.IO.StringWriter = New System.IO.StringWriter
    tw.Encoding.GetEncoding("GB2312")Dim wter As System.IO.StreamWriter
    wter.Encoding.GetEncoding("GB2312")2)<META http-equiv="Content-Type" content="text/html; charset=gb2312">
    3)<globalization 
                requestEncoding="gb2312" 
                responseEncoding="gb2312" 
       />
      

  7.   


    把读写文件换成UTF8 试试
    下面的只是C#写法 vb不怎么懂
    System.Text.Encoding.UTF8.ToString();
    StreamReader fileStream = new StreamReader(Server.MapPath(ad_file1.ToString()),System.Text.Encoding.Default);
    StreamWriter Writefile = new StreamWriter(Server.MapPath("ad/"+adid.ToString()+".js"),false,System.Text.Encoding.Default);
      

  8.   

    如果我把代码中的所有GB2312换成UTF8到是正确的,可是现在我想要GB2312的谢谢
      

  9.   

    <%@ Page language="VB" AutoEventWireup="true" %>
    <script runat=server>
    Sub Page_Load(sender as object ,e as System.EventArgs )
    Response.CharSet = "GB2312"
    Me.EnableViewState = False
    Dim tw As System.IO.StringWriter = New System.IO.StringWriter
    tw.Encoding.GetEncoding("GB2312")
    Dim wt As HtmlTextWriter = New HtmlTextWriter(tw)
    Server.Execute("b1.aspx", tw)
    Dim path As String = Server.MapPath("b.htm")
    Dim wter As New System.IO.StreamWriter(path,True,System.Text.Encoding.GetEncoding("GB2312"))
    wter.Write(tw.ToString)
    wter.Close()
    wt.Close()
    tw.Close()
    Response.Redirect("b.htm")
    Response.End()
    End Sub
    </script>
      

  10.   

    不要用
    wter = System.IO.File.CreateText(path)
      

  11.   

    用前辈的方法,好像b.htm页面有两次生成的效果,一次乱码,一次正确,两次重叠在了一起。
      

  12.   

    <%@ Page language="VB" AutoEventWireup="true" %>
    <script runat=server>
    Sub Page_Load(sender as object ,e as System.EventArgs )
    Response.CharSet = "GB2312"
    Me.EnableViewState = False
    Dim path As String = Server.MapPath("b.htm")
    Dim tw As System.IO.StreamWriter = New System.IO.StreamWriter(path,False,System.Text.Encoding.GetEncoding("GB2312"))
    Dim wt As HtmlTextWriter = New HtmlTextWriter(tw)
    Server.Execute("b1.aspx", wt)
    wt.Close()
    tw.Close()
    Response.Redirect("b.htm")
    Response.End()
    End Sub
    </script>