项目中总会遇到中文乱码的问题,java,php,ast.net都如此。
中文的问题分为3种:
第一种是代码文件中自带的,如:[<asp:Label ID="Label1" runat="server" Text="Label">类别序号</asp:Label>
第二种是数据库(或文件)中的:<asp:Label ID="nameLabel" runat="server" Text='<%# Bind("name") %>' />
第三种是get(post)传递的,Request.QueryString["mmmid"]
如果保证开发环境与部署环境是一致的,那么,中文的问题,一般出在第三个.
前2个问题,asp。net会替你自动解决, 它的默认全部是utf-8.
第三个中的post过来的数据也没有问题,如果有问题,与get的解决方式一样。
所以,在asp.net中,主要是在开发时的get的中文传递的问题。
如果 Request.QueryString的中文乱码问题解决了,那么,中文的问题就都解决了。
国内的服务器,大多数是中文系统,默认配置
requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding="gb2312"
responseHeaderEncoding="utf-8"
你只要在配置文件web.config中加入:
<system.web>
<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312" responseHeaderEncoding="gb2312" />
</system.web>
问题,一般就解决了。
如果还不行, 在aspx,或master文件头部加入:
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
应该就没有问题了。
如果你的项目是多语言,源代码及数据库是基于utf-8。但要用Request.QueryString获取中文,
在配置文件web.config中加入:
<system.web>
<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="utf-8" responseHeaderEncoding="utf-8" />
</system.web>
在aspx,或master文件头部加入:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />,
应该就没有问题了。
如果有问题的话,说明你的文件不只是一种类型,文件编译出现了错误。
大多数情况下,说明你的文件含有gb2312编码,
这时,你要把配置文件中的fileEncoding="utf-8" , 改为gb2312;
或者,把文件中含有的gb2312编码,改为utf-8;
(在gb2312,utf8相互转换过程中。一定要在与开发环境一致的系统中转换效果最好。
比如:在与开发环境一致的windows系统中,用记事本打开,然后另存为需要的编码就可以了。
如果用第三方工具,一定要多测试后,在转换,转换前要备份,转换后,要测试,
最好,转换一个测试一个。本人感觉用windows自带的记事本的转换的效果最好,起码比ue好,缺点是一次转换一个,
但优点是成功率100%)。
)
而且,要注意一点,在ie6/7/8/, firefox中,他们会有一些不同,个人感觉,firefox的比较符合标准。
但ie6、7、8用的人太多了,所以要全面测试。
以上的内容在asp.net2,vs2008中文team,windows2008中文系统,iis7,ie6/7/8,firefox3默认配置下,
进行了多次测试,来支持这段文字的可靠性。