像下面的写法中,如果 xxxx 是不存的属性报错就是乱码,还有其他一些情况也是乱码,有时又是正常的显示错误信息。
html的开头指定编码格式
<meta charset="utf-8"/>
@吴瑞祥: 界面本来就有这个设置的,冇用。
@戢俊建: 那说明原来的设置是错的,你看下输出的编码方式是什么样的,
在浏览器上可以修改编码方式,
@吴瑞祥: 浏览器里是utf-8,问题是有时是正常的,有时乱码。如果aspx里有错误,大部分是乱码,aspx.cs文件有错,是正常的。其他层有错误也是乱码。这个是重点哈。
@戢俊建: 异常的时候出乱码?不异常的时候就没问题?
@吴瑞祥: 是的,就是异常也有时是正常的,另外,我记录的错误日志中显示也是正常的。
@戢俊建: 那就是异常页面的编码有问题.
你检查下异常页面的编码情况吧
@吴瑞祥: iis express异常页面是在哪里,能详细说说下么?
@吴瑞祥: 是否异常来源不同,异常界面也不同哦。
@戢俊建: 那就统一下异常页面,可以修改配置,自定义异常页面
@吴瑞祥: iis express异常页面是在哪里,能详细说说下么
@戢俊建: iis express异常页面你完全无视就行了.因为不会上线的.
自定义异常页面看看会不会还有这种情况吧,
设置一下编码方式
目前整个站都是设置的uft8,冇用哦。
@戢俊建: 文件-》高级保存选项中设置了吗?
那就Config里面的设置 global 设置
问题是有时是正常的,有时乱码。如果aspx里有错误,大部分是乱码,aspx.cs文件有错,是正常的。其他层有错误也是乱码。这个是重点哈。
另外,您说的Config是指哪里?
@戢俊建: 决定乱不乱码有在web上面有几个隐私:
1.文件本身的编码格式;aspx本身文件的编码格式,可以用notepad++等软件看,转换
2.客户端浏览器的发送的请求格式,一般不是这个问题
3.IIS内部设置的格式(web.config有一个global配置节,如果没有,可以自己搜索添加)
4.客户端浏览器格式解析
虽然解决方案不是几位朋友说的,还是谢谢各位。我后来发现是 Application_PreRequestHandlerExecute中关于压缩的有问题,也没有找到好的方案,就是注释就正常了。要是各位知道如果处理,还请指点下。下面是代码。
void Application_PreRequestHandlerExecute(object sender, EventArgs e) { HttpApplication app = sender as HttpApplication; string acceptEncoding = app.Request.Headers["Accept-Encoding"]; System.IO.Stream prevUncompressedStream = app.Response.Filter; if (!(app.Context.CurrentHandler is Page || app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") || app.Request["HTTP_X_MICROSOFTAJAX"] != null) return; if (acceptEncoding == null || acceptEncoding.Length == 0) return; acceptEncoding = acceptEncoding.ToLower(); if (acceptEncoding.Contains("deflate") || acceptEncoding == "*") { // defalte //app.Response.Filter = new System.IO.Compression.DeflateStream(prevUncompressedStream,System.IO.Compression.CompressionMode.Compress); app.Response.AppendHeader("Content-Encoding", "deflate"); } else if (acceptEncoding.Contains("gzip")) { // gzip app.Response.Filter = new System.IO.Compression.GZipStream(prevUncompressedStream,System.IO.Compression.CompressionMode.Compress); app.Response.AppendHeader("Accept-Encoding", "gzip"); } }
现在有好的解决方法
我的是到 ActionFilter 后异常,然后就直接报错,也不懂哪边出错;。