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

 更新时间:2013年06月17日 15:04:12   作者:  
参考的美工静态页面是gb2312格式的,当此编码拿到项目中后,utf-8编码的系统,加载页面时,会出现样式问题,比如不能正常居中等
可能标题描述的不是特别清楚
当时的问题是这样的:在我的系统项目中,参考的美工静态页面是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编码,除非有特殊用途。

相关文章

  • .NET中的枚举用法浅析

    .NET中的枚举用法浅析

    这篇文章主要介绍了.NET中的枚举用法,分析了枚举的定义、转换、判定等常见用法,需要的朋友可以参考下
    2015-01-01
  • ASP.NET MVC HttpPostedFileBase文件上传的实例代码

    ASP.NET MVC HttpPostedFileBase文件上传的实例代码

    这篇文章主要介绍了ASP.NET MVC HttpPostedFileBase文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 一步步教你读懂NET中IL(图文详解)

    一步步教你读懂NET中IL(图文详解)

    本文章以一个实际的例子,让你了解堆叠式 VM 的运作原理,并对 .NET IL(Intermediate Language)有最基本的領略,需要的朋友可以参考下
    2013-07-07
  • ASP.NET DropDownListCheckBox使用示例(解决回发问题)

    ASP.NET DropDownListCheckBox使用示例(解决回发问题)

    本文为大家介绍下ASP.NET DropDownListCheckBox的使用,这个是根据LigerUI改的,解决了回发问题,喜欢的朋友可以参考下
    2013-11-11
  • Asp.Net Core 中的“虚拟目录”实现

    Asp.Net Core 中的“虚拟目录”实现

    这篇文章主要介绍了Asp.Net Core 中的“虚拟目录”实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • .NET 6开发TodoList应用之实现ActionFilter

    .NET 6开发TodoList应用之实现ActionFilter

    Filter在.NET Web API项目开发中也是很重要的一个概念,它运行在执行MVC响应的Pipeline中执行,允许我们将一些可以在多个Action之间重用的逻辑抽取出来集中管理。本文将详细介绍一下.NET 6如何实现ActionFilter,感兴趣的可以学习一下
    2021-12-12
  • .Net遍历窗体上控件的方法

    .Net遍历窗体上控件的方法

    这篇文章主要介绍了.Net遍历窗体上控件的方法,通过foreach语句实现遍历窗体上的控件以及找出TextBox控件的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • ASP.NET使用GridView导出Excel实现方法

    ASP.NET使用GridView导出Excel实现方法

    这篇文章主要介绍了ASP.NET使用GridView导出Excel实现方法,是asp.net操作office文件的一个典型应用,代码中备有较为详尽的注释便于读者理解,需要的朋友可以参考下
    2014-11-11
  • .net GridView分页模板的实例代码

    .net GridView分页模板的实例代码

    .net GridView分页模板的实例代码,对分页代码有兴趣的朋友可以参考一下
    2013-03-03
  • 在ASP.NET中下载文件的实现代码

    在ASP.NET中下载文件的实现代码

    通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始。当我们要让用户下载一个文件
    2012-02-02

最新评论