欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

asp使用utf-8编码乱码问题

shiping1 的头像

sp使用utf-8编码乱码问题

2009-08-03 13:06youpeng_123  分类:其他编程语言 | 浏览 3203 次
asp页面使用utf-8只要出现错误,刷新下后,就会变成乱码,并且奇怪的是,变乱码的是从数据库中取出的文字,而网页中的文字不乱,右键属性更改编码格式为gb2312后,数据库取出的文字正常,但是网页的文字乱码,这样究竟是个怎么回事呢?很是困惑。希望高手给个解决方法!
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我都加上了了,没用。并且我奇怪的是为什么总是数据库取出的文字乱码 
找到了,要加一句<%Session.CodePage = 65001%>就可以了
 
2009-08-03 13:11编码问题!
正解答案
如果网站中网页有gb2312和utf-8两种编码,浏览时就会产生乱码

utf-8编码,在asp页面顶部增加:
Session.CodePage=65001
Response.Charset="UTF-8"

即可解决乱码问题

来自 http://zhidao.baidu.com/link?url=H8YHnUpt_JjmI9vrt2oqKxxYZfR1E1C893dvG8TGmG0mf_5YjOFUti2izHpa-VCX1Cl...

asp中UTF-8编码和中文文件下载的问题

这是自己很久以前写的,发在这里保存下。

大家一般都知道设置 Response.Charset="utf-8"来确保浏览器可以正确解释页面内容,使用<%@ CODEPAGE=65001 %>来保证页面源码自身编码的正确性,但是很多人会忘记session.codepage属性.

 

session.codepage是用来确保动态内容的输出编码的.例如可以控制response.write输出的字符串编码.如果不设置session.codepageasp引擎一般设置为asp源码的编码格式而不是response.Charset中指定的编码.

例子: asp代码用utf-8格式保存,页面中设置了正确的codepage 和 response.Charset, 此时使用response.write输出一串中文,浏览器可以正确按照utf-8编码显示.在response.write语句之前设置session.codepage=936,再次刷新页面则浏览器显示乱码,强制浏览器按照gb2312编码显示则正确.

上面说了这么多,下面谈谈session.codepage的一个用途.

现在的文件下载一般不直接提供真是的url地址,而是使用组件write,例如adostream之类的.此时要设置content-type为 application/octet-stream之类,同时设置Header:Content-Disposition为 attachment;filename=youfilename.txt;来确保浏览器弹出下载对话框而不是直接显示.

这里有一个问题:IE6有一个bug,就是不能正确处理attachment;filename中的filename编码,IE使用操作系统默认编码来处 理.中文windows的默认编码为gbk,所以如果asp页面输出使用gb2312格式则不会出错,如果使用utf-8格式输出的话则会100%的乱 码.

此时session.codepage派上用场了.

参考如下代码:

fn = "中文文件名.doc"
session.CodePage = 936  '设置为gb2312编码输出
Response.AddHeader "Content-Disposition""attachment;filename=" & fn
Response.AddHeader 
"Content-Type""application/octet-stream"
session.CodePage = 65001 '恢复为utf-8编码输出

这样在返回的header中filename被强制编码为gb2312编码, IE就可以正确的处理了.

btw:据说IE6的某个版本还有个bug就是不能处理长度超过150个字节的filename,我没有遇到过,可能我补丁打的比较勤吧.
Firefox在处理attachment;filename=的时候默认用utf-8来解码,但是像上面那样用gb2312他也能正确识别出来..真是神奇 :)
不知道IE7在这个方面是不是有所改观呢.

来自 http://www.cnblogs.com/xwing/archive/2008/10/07/1305235.html

普通分类: