欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

静态gb2312编码在项目传值出现中文乱码现象

时间:2021-03-19 09:44:50|栏目:.NET代码|点击:
可能标题描述的不是特别清楚
当时的问题是这样的:在我的系统项目中,参考的美工静态页面是gb2312格式的,当此编码拿到项目中后,utf-8编码的系统,加载页面时,会出现样式问题,比如不能正常居中等。(IE6通常有样式问题)
解决办法如下,(如果必须采用gb2312编码的话)
在webconfig的<system.web>中增加
复制代码 代码如下:

<globalization requestEncoding="gb2312" responseEncoding="gb2312" uiCulture="zh-CN" culture="zh-CN" fileEncoding="gb2312"/>

此时,页面效果正常。
但是,如果这个时候遇到有页面传值中文的功能时,传值的中文会乱码。即使在js中用了encodeURIComponent也不能解决
此时,在项目中增加如下类,用于专门处理request传值转回utf-8格式。
复制代码 代码如下:

namespace XXX
{
//用于处理IE6下UTF-8得不到样式的问题:将web的编码改为gb2312,request传值通过本方法转回utf-8
public class ContentEncodingModule : IHttpModule
{
public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(app_BeginRequest);
}
public void Dispose()
{
}
void app_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpWorkerRequest request = (((IServiceProvider)app.Context)
.GetService(typeof(HttpWorkerRequest)) as HttpWorkerRequest);
app.Request.ContentEncoding = System.Text.Encoding.UTF8;
}
}
}

并在webconfig中引用此类
复制代码 代码如下:

<httpModules>
<add name="ContentEncodingModule" type="XXX.ContentEncodingModule,XXX"/>
</httpModules>

问题解决。
但根据参考文章说,尽量还是不要将静态页用gb2312编码,除非有特殊用途。

上一篇:c#和sql如何获得时间间隔的方法

栏    目:.NET代码

下一篇:C# FileStream读写的文本操作代码分析

本文标题:静态gb2312编码在项目传值出现中文乱码现象

本文地址:http://www.codeinn.net/misctech/83697.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有