UTF-8编码用于asp出现乱码问题
2010-08-10 10:47
417 查看
UTF-8编码用于asp出现乱码问题--从数据库调用的是乱码--gb2312转换utf8(转载)
今天在用utf-8编码用在新的网站上,不想问题还真多,所以找了些文章,帖子,看了看,等下有用的就贴下面了。
今天,我开始把 CODEPAGE="936" 改成 CODEPAGE="65001"
把charset=gb2312改成 charset=utf-8
可是还是乱码,只要是脚本用的地方还是乱码,现在终于找到问题了,就是当脚本输出时候,要以utf-8编码输出。
就是要加一句<% Response.Charset = "utf-8" %>
①首先当然是页面本身用utf-8编码,在DW新建页时默认编码定为“Unicode(UTF-8)”
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>
' ②CODEPAGE="65001" 告诉服务器页面使用UTF-8编码的
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
' ③charset=utf-8告诉浏览器页面使用UTF-8编码的
</head>
<body>
<% Response.Charset = "utf-8" %>
' ④服务器输出编码为utf-8
</body>
</html>
晕,事情还没有结束
刚开心,问题出来了,刷新后又变成乱码,或者浏览其他的gb2312的页面回来又乱码了。值得又去google了一下,呵呵,还是找到答案了
看看下面的文字,就知道了,所有在后来我加了这个,程序顶端
<%Session.CodePage=65001%>
<%@ codepage=936%>简体中文
<%@ codepage=950%>繁体中文
<%@ codepage=65001%>UTF-8
codepage指定了IIS按什么编码读取传递过来的串串(表单提交,地址栏传递等)。
出乱码的原因也就是网站要整合的时候模块编码不一样引起的。
不要转换任何模块网页的编码该utf-8的还是utf-8,该Gb22312的还是Gb2312
于是我将GB2312模块的conn.asp文件中加入了以下这段代码
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Session.CodePage=936%>
一切OK!
同样在在Utf-8模块的包文件(如conn.asp,但是要注意conn.asp必须是在第一行调用)最前面加上
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%>
在AJAX中用XMLHttpRequest发送请求时如用post方式传送数据,容易出现中文乱码问题!原因是Ajax中XMLHttpRequest对象的,默认编码方式是UTF-8。
AJAX中文问题分为两大类:
1)发送路径中的参数有中文,在服务器段接收参数值是乱码
例如:
var url="index.jsp?name=活力宝贝";
xmlHTTP.open ("post",url,true);
解决办法:
利用javascript的提供的escape()或encodeURI()方法
例如:
客户端:
var url="index.jsp?name=活力宝贝";
url=encodeURI(url);
url=encodeURI(url); //两次,很关键[具体为什么,我也不清楚]
//或者 var url="a.jsp?name=escape("活力宝贝")"; 功能和encodeURI方法类似。
xmlHTTP.setrequestheader("cache-control","no-cache");
xmlHTTP.setrequestheader("Content-Type","application/x-www-form-urlencoded");
xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//指定发送数据的编码格式
xmlHTTP.open ("post",url,true);
服务器端:
String name = request.getParameter("name");
name = java.net.URLDecoder.decode("name", "UTF-8");
2)返回来的responseText或responseXML的值中含有中文是乱码
原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。
解决办法:
在服务器指定发送数据的格式:
在jsp文件中:
response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
或是
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");
总结:
1)ajax提交数据的格式默认为utf-8,利用javascript的提供的escape()或encodeURI()方法.在服务器端接收的时候要使用java.net.URLDecoder.decode("","UTF-8")方法进行解码.
2)xtmlhttp 返回的数据默认的字符编码是utf-8,所以服务器要向客户端发送数据的时候,也要采用utf-8编码.如果上述方法仍然解决不了乱码问题,那你尝试一下把jsp,htm,java文件用UTF-8编码格式保存.
总之:前后台数据交互都采用utf-8编码就行了.
今天在用utf-8编码用在新的网站上,不想问题还真多,所以找了些文章,帖子,看了看,等下有用的就贴下面了。
今天,我开始把 CODEPAGE="936" 改成 CODEPAGE="65001"
把charset=gb2312改成 charset=utf-8
可是还是乱码,只要是脚本用的地方还是乱码,现在终于找到问题了,就是当脚本输出时候,要以utf-8编码输出。
就是要加一句<% Response.Charset = "utf-8" %>
①首先当然是页面本身用utf-8编码,在DW新建页时默认编码定为“Unicode(UTF-8)”
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>
' ②CODEPAGE="65001" 告诉服务器页面使用UTF-8编码的
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
' ③charset=utf-8告诉浏览器页面使用UTF-8编码的
</head>
<body>
<% Response.Charset = "utf-8" %>
' ④服务器输出编码为utf-8
</body>
</html>
晕,事情还没有结束
刚开心,问题出来了,刷新后又变成乱码,或者浏览其他的gb2312的页面回来又乱码了。值得又去google了一下,呵呵,还是找到答案了
看看下面的文字,就知道了,所有在后来我加了这个,程序顶端
<%Session.CodePage=65001%>
<%@ codepage=936%>简体中文
<%@ codepage=950%>繁体中文
<%@ codepage=65001%>UTF-8
codepage指定了IIS按什么编码读取传递过来的串串(表单提交,地址栏传递等)。
出乱码的原因也就是网站要整合的时候模块编码不一样引起的。
不要转换任何模块网页的编码该utf-8的还是utf-8,该Gb22312的还是Gb2312
于是我将GB2312模块的conn.asp文件中加入了以下这段代码
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Session.CodePage=936%>
一切OK!
同样在在Utf-8模块的包文件(如conn.asp,但是要注意conn.asp必须是在第一行调用)最前面加上
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%>
解决AJAX中文乱码问题
技术篇 2007-12-27 13:34:08 阅读382 评论2 字号:大中小在AJAX中用XMLHttpRequest发送请求时如用post方式传送数据,容易出现中文乱码问题!原因是Ajax中XMLHttpRequest对象的,默认编码方式是UTF-8。
AJAX中文问题分为两大类:
1)发送路径中的参数有中文,在服务器段接收参数值是乱码
例如:
var url="index.jsp?name=活力宝贝";
xmlHTTP.open ("post",url,true);
解决办法:
利用javascript的提供的escape()或encodeURI()方法
例如:
客户端:
var url="index.jsp?name=活力宝贝";
url=encodeURI(url);
url=encodeURI(url); //两次,很关键[具体为什么,我也不清楚]
//或者 var url="a.jsp?name=escape("活力宝贝")"; 功能和encodeURI方法类似。
xmlHTTP.setrequestheader("cache-control","no-cache");
xmlHTTP.setrequestheader("Content-Type","application/x-www-form-urlencoded");
xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//指定发送数据的编码格式
xmlHTTP.open ("post",url,true);
服务器端:
String name = request.getParameter("name");
name = java.net.URLDecoder.decode("name", "UTF-8");
2)返回来的responseText或responseXML的值中含有中文是乱码
原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。
解决办法:
在服务器指定发送数据的格式:
在jsp文件中:
response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
或是
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");
总结:
1)ajax提交数据的格式默认为utf-8,利用javascript的提供的escape()或encodeURI()方法.在服务器端接收的时候要使用java.net.URLDecoder.decode("","UTF-8")方法进行解码.
2)xtmlhttp 返回的数据默认的字符编码是utf-8,所以服务器要向客户端发送数据的时候,也要采用utf-8编码.如果上述方法仍然解决不了乱码问题,那你尝试一下把jsp,htm,java文件用UTF-8编码格式保存.
总之:前后台数据交互都采用utf-8编码就行了.
相关文章推荐
- utf-8编码用于asp出现乱码的问题--从数据库调用的是乱码
- utf-8编码用于asp 出现乱码的问题--从数据库调用的是乱码--gb2312转换utf-8
- ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明
- utf-8编码的数据文件用excel打开出现的乱码问题
- 不同编码页面之间用form传值出现乱码问题解决方案 utf-8 到 gb2312
- asp utf-8编码 乱码问题
- ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明
- 全部UTF-8编码使用AJAX还会出现中文乱码问题?
- 正确设置“UTF-8”编码格式,避免出现乱码问题
- C# utf-8编码时转换成shift-jis时出现乱码问题的处理
- jspsmart 支持jdk1.4 解决utf-8编码时出现乱码的问题 附源码和jar包
- JSP 即使使用UTF-8编码,仍然出现中文乱码问题的原因
- 更正ftp上传采用utf-8编码方式写入txt文件用IE打开出现乱码的问题
- 【ASP】UTF-8编码的vbscript页面,调试信息的乱码问题
- 截取UTF-8编码的汉字,最后一个字出现乱码的问题
- 用外部程序添加的UTF-8编码的Web窗体在ASP.NET中显示乱码的问题的解决
- asp使用utf-8编码出现乱码的困惑
- 解决全局utf-8编码下asp.net接收gb2312乱码的问题
- ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明
- 网页中对某一资源进行添加或修改,且传过去和接收的参数不出现编码问题,但是却出现乱码