网络安全、asp、asp.net编程

本文探讨了AJAX请求中出现乱码的原因及解决方案,主要分析了前后端编码不一致导致的问题,并提供了调整编码和编码转换等实用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

产生原因

主要有2个原因

1 xtmlhttp 返回的数据默认的字符编码是utf-8,如果前台页面是gb2312或者其它编码数据就会产生乱码

2 post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码

解决方法

进一步整理中

推荐方法,前台后台都用utf-8编码,这样可以省不少麻烦,从根本上解决了乱码问题.优点是效率高,而且符合目前的形式,utf-8编码本身就是一种比较优秀的编码,没有语言限制.缺点只能调用自己的后台编码或者其他的utf-8的编码.

前台更改为

程序代码

后台asp中第一行加入如下代码

程序代码

后台如果有html代码也需保证

程序代码

补救的方法是进行编码转换.可以在客户端也可以在服务器端进行编码转换.优点是没有任何限制,缺点效率低.

这里是服务端的asp编码,由于脚本语言是javascript,所以直接复制到客户端也可以使用!

补充

如果是老系统升级ajax,如果系统是gb2312的话,也无需大修改

新建立一个ajax的后台页面编码是utf-8,前台可以为任意编码,后台页面负责添加数据库,可保证存入数据库后无乱码

ajax在post中文的时候解决乱码的方法

加上设置字符编码的方法:

response.setheader("charset","gb2312");

********************************************

看到的说明原文如下:

用ajax来get回一个页面时,responsetext里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responsetext的时候,是把resposebody按utf-8编码进解码考形成的,如果服务器送出的确实是utf-8的数据流的时候汉字会正确显示,而送出了gbk编码流的时候就乱了。解决的办法就是在送出的流里面加一个header,指明送出的是什么编码流,这样xmlhttp就不会乱搞了。

php:header('content-type:text/html;charset=gb2312');

asp:response.charset("gb2312")

jsp:response.setheader("charset","gb2312");

在用asp.net写网上支付的接口程序时,遇到一个奇怪问题,通过表单提交过去的中文全是乱码,英文正常。而用asp程序进行测试,可以正常提交中文,asp页面中有这样的html代码:

meta http-equiv="content-type" content="text/html; charset=gb2312">

可是将这个代码加入到asp.net页面中,依然解决不了问题。分析了一下,问题应该是编码引起的,对方的程序只能处理gb2312编码的页面提交过来的中文数据。难道加了上面的代码,asp.net却不是以gb2312编码显示的?打开该页面,查看一下浏览器的编码,原来是utf-8,原因找到,怎么解决呢?看来,asp.net不理睬上面的代码,自己向浏览器发送编码信息,那我设置一下response.contentencoding试试,在page_load中加上如下代码:

response.contentencoding = system.text.encoding.getencoding("gb2312");

转自网络


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值