ASP.NET中与编码方式相关的问题
来源:互联网 发布:java ftp上传文件卡死 编辑:程序博客网 时间:2024/06/06 01:34
一.在Asp.net的HttpCookie中写入汉字,读取时为乱码
其实这是因为文字编码而造成的,汉字是两个编码,所以才会搞出这么个乱码出来!其实解决的方法很简单:只要在写入Cookie时,先将其用Url编码,然后再写入,当我们读取时再解码就OK了.
例子:
Cookie的写入:
HttpCookie cookie=new HttpCookie("Simple");
cookie.Values.Add("Simple1",HttpUtility.UrlEncode("中文字符测试!"));
cookie.Values.Add("Simple2","The English Charactor Test!");
Response.AppendCookie(cookie);
Cookie的读取:
HttpCookie cookie=Request.Cookies["Simple"];
string simple1=HttpUtility.UrlDecode(cookie["Simple1"]);
string simple2=cookie["Simple2"];
这样
simple1="中文字符测试!";
simple2="The English Charactor Test!";
二.地址栏中传递带中文字符的参数
传递参数时先将其进行urlencode编码,然后再赋给URL连接,避免获取中文参数时,取出乱码的问题;
例子:
string Text = "地址栏中传递带中文字符的参数"
Text = System.Web.HttpUtility.UrlEncode(Text, System.Text.Encoding.GetEncoding("GB2312"));
三.导出EXCEL时与编码相关的问题
......
四.把UTF-8编码转换为GB2312编码
最近在做的广告系统中,碰到了一个问题,广告系统采用的UTF-8编码,而一些使用这套广告系统的频道页面使用的是GB2312编码。当然也有使用UTF-8编码的频道使用这套广告系统。
频道页面是通过嵌入类似如下的代码方式,来调用广告的。具体那个时间显示那个广告,或者那些广告组合是广告系统自己处理的。
不同编码的页面、脚本之间互相引用,就会产生乱码的问题,解决方法就是统一成一种编码。
asp.net 中,如果要修改输出页面的编码,可以通过修改web.config中以下配置信息
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
以上只是修改整体的默认编码,如果只有某个页的编码需要修改,ASP.net 中则可以简单的使用下面代码:
五.ASP.NET自动识别GB2312与UTF-8编码的文件
http://www.webjx.com 更新日期:2007-10-15 22:27 出处:网页教学网
Question
在简体中文系统中,我们有时候需要打开一个保存在磁盘上的纯文本文件,例如txt,但却不知道其保存编码,该怎么办呢?
如果文本只需要在Windows上显示,那就很幸运了,因为无论是GB2312还是UTF-8编码的string都能够正确显示。但如果需要输出到ASP.NET页面上就不是那么简单了,因为如果页面编码为UTF-8但纯文本文件导入的string是GB2312,那就会导致乱码,反之亦然。因此,我们需要一种方法自动识别磁盘上的纯文本文件到底是么编码的。
Answer
StreamReader其实是有编码自动检测功能,不过因为它仅仅检测前3个字节,所以只能UTF-8、Little-Endian Unicode、Big-Endian Unicode之前作出选择,如果上述3个都不匹配,就选择用户提供的编码。因此,我们可以提供GB2312编码给StreamReader,让它在GB2312和UTF-8之前自动作出选择。
其实这是因为文字编码而造成的,汉字是两个编码,所以才会搞出这么个乱码出来!其实解决的方法很简单:只要在写入Cookie时,先将其用Url编码,然后再写入,当我们读取时再解码就OK了.
例子:
Cookie的写入:
HttpCookie cookie=new HttpCookie("Simple");
cookie.Values.Add("Simple1",HttpUtility.UrlEncode("中文字符测试!"));
cookie.Values.Add("Simple2","The English Charactor Test!");
Response.AppendCookie(cookie);
Cookie的读取:
HttpCookie cookie=Request.Cookies["Simple"];
string simple1=HttpUtility.UrlDecode(cookie["Simple1"]);
string simple2=cookie["Simple2"];
这样
simple1="中文字符测试!";
simple2="The English Charactor Test!";
二.地址栏中传递带中文字符的参数
传递参数时先将其进行urlencode编码,然后再赋给URL连接,避免获取中文参数时,取出乱码的问题;
例子:
string Text = "地址栏中传递带中文字符的参数"
Text = System.Web.HttpUtility.UrlEncode(Text, System.Text.Encoding.GetEncoding("GB2312"));
三.导出EXCEL时与编码相关的问题
......
四.把UTF-8编码转换为GB2312编码
最近在做的广告系统中,碰到了一个问题,广告系统采用的UTF-8编码,而一些使用这套广告系统的频道页面使用的是GB2312编码。当然也有使用UTF-8编码的频道使用这套广告系统。
频道页面是通过嵌入类似如下的代码方式,来调用广告的。具体那个时间显示那个广告,或者那些广告组合是广告系统自己处理的。
<script type="text/javascript">
<!--
csdn_AD_Position_GroupID = "{f05ff3bf-246b-4d71-a101-b5d4ee3f6cd3}";
csdn_AD_Page_Url = document.location;
//-->
</script>
<script type="text/javascript" src=http://ads.csdn.net/AD/Show_js_AD.js >
</script>
<!--
csdn_AD_Position_GroupID = "{f05ff3bf-246b-4d71-a101-b5d4ee3f6cd3}";
csdn_AD_Page_Url = document.location;
//-->
</script>
<script type="text/javascript" src=http://ads.csdn.net/AD/Show_js_AD.js >
</script>
asp.net 中,如果要修改输出页面的编码,可以通过修改web.config中以下配置信息
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
以上只是修改整体的默认编码,如果只有某个页的编码需要修改,ASP.net 中则可以简单的使用下面代码:
在非ASP.net 应用中,可能你读到的数据是UTF-8编码,但是你要转换为GB2312编码,则可以参考以下代码:Encoding gb2312 = Encoding.GetEncoding("gb2312");Response.ContentEncoding = gb2312;
当然,其他各种编码之间的转换,跟上述代码也类似的,就不描述了。string utfinfo = "document.write(/"alert('aa你好么??');/");";string gb2312info = string.Empty;Encoding utf8 = Encoding.UTF8;Encoding gb2312 = Encoding.GetEncoding("gb2312");// Convert the string into a byte[].byte[] unicodeBytes = utf8.GetBytes(utfinfo);// Perform the conversion from one encoding to the other.byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes); // Convert the new byte[] into a char[] and then into a string.// This is a slightly different approach to converting to illustrate// the use of GetCharCount/GetChars.char[] asciiChars = new char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);gb2312info = new string(asciiChars);
五.ASP.NET自动识别GB2312与UTF-8编码的文件
http://www.webjx.com 更新日期:2007-10-15 22:27 出处:网页教学网
Question
在简体中文系统中,我们有时候需要打开一个保存在磁盘上的纯文本文件,例如txt,但却不知道其保存编码,该怎么办呢?
如果文本只需要在Windows上显示,那就很幸运了,因为无论是GB2312还是UTF-8编码的string都能够正确显示。但如果需要输出到ASP.NET页面上就不是那么简单了,因为如果页面编码为UTF-8但纯文本文件导入的string是GB2312,那就会导致乱码,反之亦然。因此,我们需要一种方法自动识别磁盘上的纯文本文件到底是么编码的。
Answer
StreamReader其实是有编码自动检测功能,不过因为它仅仅检测前3个字节,所以只能UTF-8、Little-Endian Unicode、Big-Endian Unicode之前作出选择,如果上述3个都不匹配,就选择用户提供的编码。因此,我们可以提供GB2312编码给StreamReader,让它在GB2312和UTF-8之前自动作出选择。
using (StreamReader reader = new StreamReader(path, Encoding.Default)
{
string line;
while ((line = reader.ReadLine()) != null)
{
FileTextBox.InnerHtml += Server.HtmlEncode(line) + " ";
}
FileEncodingNameLabel.Text = reader.CurrentEncoding.EncodingName;
}
{
string line;
while ((line = reader.ReadLine()) != null)
{
FileTextBox.InnerHtml += Server.HtmlEncode(line) + " ";
}
FileEncodingNameLabel.Text = reader.CurrentEncoding.EncodingName;
}
上述代码使用Encoding.Default初始化StreamReader,Encoding.Default指的是系统的默认ANSI编码,在简体中文系统中就是GB2312。这样写能够让代码保持有一定的兼容性,例如在繁体中文系统就变成了自动在Big5和UTF-8之间做出选择。之后的代码就是用StreamReader逐行读取文件内容并放到FileTextBox中,最后通过StreamReader的CurrentEncoding属性获取编码名称并显示在FileEncodingNameLabel中。
- ASP.NET中与编码方式相关的问题
- 还是编码问题,JS编码与ASP.NET的解码
- asp.net 编码问题
- cookie编码转换问题,asp与asp.net
- ASP.NET页面的编码问题
- Asp.Net页面的编码问题
- Asp.net的一些编码问题
- ASP.NET的字符编码问题
- .net中编码的问题
- 就自己使用ASP.NET写的小系统中出现的问题总结与解决方式
- 一组 asp.net Application 相关的问题
- 【面试&笔试】ASP.NET的相关问题
- ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明
- 在ASP.NET中代码与网页分离的问题
- ASP.NET 中关于 System.OutOfMemoryException 的问题与解决方法
- ASP.NET 中关于 System.OutOfMemoryException 的问题与解决方法
- ASP.NET 与 Ajax 的实现方式
- ASP.NET 与 Ajax 的实现方式
- Struts 学习 三
- mriosoft面试题
- ASP.NET页面中显示数据库记录集最快的方法
- C++和JNI的数据转换
- Java连接加密后的Access数据库
- ASP.NET中与编码方式相关的问题
- 牛奶食疗可治多种疾病(图)
- 八年成就开发梦——IT精英中的活雷锋郭红俊
- 工作进度
- javascript 中的捕获异常
- 水晶报表的制作
- fd最大值和限制
- c#经典入门学习笔记-定义类成员
- 巴格达人民感谢中国城管