AJAX 中文转码的解决(jsp 中使用action 访问)

合集下载

ajax+php应用的乱码问题分析与解决

ajax+php应用的乱码问题分析与解决

明确问题:很多朋友出现乱码后,就在论坛发帖,或网上搜寻相关文章.然后,很快就认识了header("content-type:text/html; charset=utf-8"),iconv('gbk', 'utf-8', " ...."),mysql_query(set names xxx)以及一个什么php实现的unescape函数等等甚至连为什么产生乱码都没去想,问题有时候还真被解决了[这就是互联网的神奇之处]其实,根本问题很容易理解,就是存储方式和读取方式不一致你存储的是一段utf-8编码的文字,却告诉浏览器用gb2312的方式去解析.问题自然就来了!如下面这段代码,用记事本保存为html文件,IE打开是没有任何问题的!如果你把第四行的gb2312改为utf-8那问题自然就来了因为记事本默认的是用ANSI标准保存,而gb2312是其中的一种!对于简体中文的操作系统,我们存储的是一段gb2312数据!如果你骗浏览器这是一段utf-8的数据,那这个忠实的仆人自然就会犯错误了![gb2312改成utf-8(请在记事本中修改)后,标题和内容成乱码了]复制内容到剪贴板代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title></head><body><p>无标题文档</p></body></html>整个ajax+php应用中,数据要转手两次存在于三个层次中分别是前台html 后台php 以及数据库下面将按一个读取的过程,依次分析两次转手的过程数据库<->php过程分析mysql编码问题,应该是我们论坛的朋友最熟悉的,就不多说了!而且没有什么可说的,你只要能确定你当前数据库中的数据不是乱码就行了这里,提一下mysql_query("SET NAMES '编码格式如(utf8)'")我找了一段网上关于set names 的说明:复制PHP内容到剪贴板PHP代码:SET NAMES显示客户端发送的SQL语句中使用什么字符集。

jQuery Ajax中文乱码问题-

jQuery Ajax中文乱码问题-

jQuery Ajax中文乱码问题?
问题:jQuery Ajax中文乱码问题? 回答:
$.ajax( dataType : json ,type : POST ,url : http://localhost/test/test.do ,data : id: 1, type: 商品,success : function(data) );
问题:
提交后后台action程序时,取到的type是乱码
解决方法:
方法一:提交前采用encodeURI两次编码,记住一定是两次
1.修改以下代码
data: id:1, type:encodeURI(encodeURI( 商品)) 2.在后台action里要对取得的字符串进行decode
1String type = request.getParameter( type );2type = URLDecoder.decode(type, UTF-8 );
方法二:ajax配置contentType属性,加上charset=UTF-8
在ajax方法中加入以下参数
contentType: application/x-www-form-urlencoded; charset=UTF-8 使用其它js框架或者xhr都是差不多,设置header 中contentType即可,
这里关键是charset=UTF-8,如果没有这个,是不行的,默认
jQuery里的contentType是没有的.
方法二在action里不需要进行decode,所以推荐使用此方法。

AJAX处理汉字乱码的问题

AJAX处理汉字乱码的问题

AJAX处理汉字乱码的问题JSP中乱码产⽣的原因是web容器(Tomcat)默认使⽤ISO-8859-1进⾏编码的,⽽我们可能使⽤的是UTF-8,GBK,GB2312等编码⽅式进⾏jsp编写的,因此需要⼀个转换器进⾏转换或者修改默认编码⽅式,这⾥我主要⽤转换器+过滤器完成⾃动转换功能.客户端脚本⽂件:View Code/** name:getTransport* create XMLHttpRequest*/var xmlhttp=null;function getHttpRequest(){try{xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');}catch(e){try{xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');}catch(e1){xmlhttp=new XMLHttpRequest();}}}function httpGet(url,method,data){if(xmlhttp==null)getHttpRequest();xmlhttp.open(method,url +"?"+data,true);//有回调函数时为true,没有时falsexmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");xmlhttp.setRequestHeader("Content-Length",data.length);xmlhttp.onreadystatechange=getCallback;xmlhttp.send (null);}function getCallback(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){var xmlDoc=xmlhttp.responseText;data=eval(xmlDoc);var tableFormat="<table rules='all' ><tr><td class='tablehead'>编号</td><td class='tablehead'>姓名</td><td class='tablehead'>性别</td><td class='tablehead'>电话</td><td class='tablehead'>地址</td><td class='tablehead'>星座</td><td for(var key in data){tableFormat+="<tr><td>"+data[key].id+"</td><td>"+data[key].name+"</td><td>"+data[key].sex+"</td><td>"+data[key].phone+"</td><td>"+data[key].address+"</td><td>"+data[key].constellation+"</td><td><a target='"+data[key].id+"' title='修改' onclick='openedit(this)'><img src='img/edit.jpg'></a></td><td><a target='"+data[key].id+"' title='删除' onclick='opendel(this)'><img src='img/del.jpg' ></a></td>< }tableFormat+="</table>";document.getElementById("showout").innerHTML=tableFormat;}else{document.getElementById("showout").innerHTML="AJAX Server error,code:"+xmlhttp.status+"!";}}}function httpPut(url, method, data){if(xmlhttp==null)getHttpRequest();xmlhttp.open(method,url,true);xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");xmlhttp.setRequestHeader("Content-Length", data.length);xmlhttp.onreadystatechange=putCallback;xmlhttp.send(data);}function putCallback(){var panel=document.getElementById("showsuccess");if (xmlhttp.readyState==4){if(xmlhttp.Status >=400 && xmlhttp.Status <=599)panel.innerHTML="Error Occurred : "& xmlhttp.Status & "-" & xmlhttp.statusText;else{panel.innerHTML=xmlhttp.responseText;httpGet("myServlet", "GET", "name="+"获得数据");}setTimeout(hideinfo,1000);}}function httpPost(url, method, data){if(xmlhttp==null)getHttpRequest();xmlhttp.open(method,url,true);xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");xmlhttp.setRequestHeader("Content-Length",data.length);xmlhttp.onreadystatechange=postCallback;xmlhttp.send(data);}function postCallback(){var panel=document.getElementById("showsuccess");if(xmlhttp.readyState==4){if(xmlhttp.status==200){if(xmlhttp.Status >=400 && xmlhttp.Status <=599)panel.innerHTML="Error Occurred : "& xmlhttp.Status & "-" & xmlhttp.statusText;else{panel.innerHTML=xmlhttp.responseText;httpGet("myServlet", "GET", "name="+"获得数据");}setTimeout(hideinfo,1000);}}}function httpDelete(url, method, data){if(xmlhttp==null)getHttpRequest();xmlhttp.open(method,url+"?"+data,true);xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");xmlhttp.setRequestHeader("Content-Length", data.length);xmlhttp.onreadystatechange=deleteCallback;xmlhttp.send(null);}function deleteCallback(){if (xmlhttp.readyState==4){if(xmlhttp.Status >=400 && xmlhttp.Status <=599)document.getElementById("showsuccess").innerHTML="Error Occurred : "& xmlhttp.Status & "-" & xmlhttp.statusText;else{document.getElementById("showsuccess").innerHTML=xmlhttp.responseText;httpGet("myServlet", "GET", "name="+"获得数据");}setTimeout(hideinfo,1000);}}function getAjaxJson(){httpGet("myServlet", "GET", "name="+"获得数据");}function addAjaxJson(){var panel=document.getElementById("addpanel");document.getElementById("title").innerHTML="增加学⽣信息选项卡";panel.style.top='50px';panel.style.left='200px';panel.style.display='block';document.getElementById("addedit").value="提交";flag=true;}function closepanel(){document.getElementById("addpanel").style.display='none';}function addrecord(){var panel=document.getElementById("showsuccess");var s= new Object();s.Id=id;=document.getElementById("name").value;s.Sex=document.getElementById("sex").value;s.Phone=document.getElementById("tel").value;s.Address=document.getElementById("address").value;s.Constellation=document.getElementById("star").value;if(==""){panel.innerHTML="学⽣姓名不能为空";setTimeout(hideinfo,1000);return;}if(s.Sex==""){panel.innerHTML="学⽣性别不能为空";setTimeout(hideinfo,1000);return;}if(s.Phone==""){panel.innerHTML="学⽣电话不能为空";setTimeout(hideinfo,1000);return;}if(s.Address==""){panel.innerHTML="学⽣家庭不能为空";setTimeout(hideinfo,1000);return;}if(s.Constellation==""){panel.innerHTML="学⽣星座不能为空";setTimeout(hideinfo,1000);return;}var data= JSON.stringify(s);if(flag==true){httpPut("myServlet","PUT",data);}else{httpPost("myServlet","POST",data);}}function openedit(obj){var panel=document.getElementById("addpanel");document.getElementById("title").innerHTML="更新学⽣信息选项卡";panel.style.top='50px';panel.style.left='200px';panel.style.display='block';document.getElementById("addedit").value="保存";for(var key in data){if(data[key].id==obj.target){id=data[key].id;document.getElementById("name").value=data[key].name;document.getElementById("sex").value=data[key].sex;document.getElementById("tel").value=data[key].phone;document.getElementById("address").value=data[key].address;document.getElementById("star").value=data[key].constellation;break;}}flag=false;}function opendel(obj){var mid=null;for(var key in data){if(data[key].id==obj.target){mid=data[key].id;break;}}if(confirm("你确定要删除数据吗?"))httpDelete("myServlet","DELETE","id="+mid);}function hideinfo(){document.getElementById("showsuccess").innerHTML='';}⾸先,项⽬中所有的源⽂件(.class,*js,*.css)的编码⽅式改为UTF-8。

Ajax实战(Ajax in action中文版)

Ajax实战(Ajax in action中文版)

1.Ajax实战(Ajax in action中文版)1.1 为什么需要Ajax富客户端?建造一个富客户端[2]毫无疑问要比设计一个网页复杂。

付出这些额外的努力,动机何在?需要付出什么代价?而且……等一下,富客户端到底是什么?富客户端的两个要点是:第一,它是“富”的;第二,它是“客户端”。

这好像是一句废话,别急,待我稍作解释。

“富”是指客户端的交互模型,要有多样化的输入方式和符合直觉的及时反馈手段。

说简单点儿,一个“富”的应用使用起来应该像是在使用现在的桌面应用一样,例如,就像是使用字处理软件(Word)或电子表格软件(Excel)。

接下来,我们有必要仔细地考察一下所要涉及的各个方面。

1.1.1 比较用户体验花几分钟使用一下你选中的应用(浏览器除外),记下它用到了哪些用户交互,然后马上回来。

为了简短起见,我举一个电子表格的例子,但是,这里所涉及的要点是通用的,足以针对文本编辑器上的各种情形。

好,我们开始。

先在电子表格中随便输入几个等式,注意到,可以以几种方式进行交互:编辑数据,用键盘和鼠标浏览数据,还可以使用鼠标拖拽来重新组织数据。

我做这些操作的时候,程序给了我反馈。

移动鼠标的时候,光标改变了形状;当鼠标停在上面的时候,按钮变亮了;选中的文字也改变了颜色。

窗口或者对话框被选中的时候,也和平常显得不一样了,等等(图1-1)。

这些就是所谓“富”的交互。

当然了,仍然有一些有待改进的地方,但这是一个好的开始。

OK,电子表格就是一个富客户端程序了吗?当然不是。

在电子表格或者类似的桌面应用中,业务逻辑和数据模型是在一个封闭的环境中运行的。

在这个环境中,它们彼此清晰地了解对方,并且可以互相访问,而环境之外的东西,对于它们来说是未知的(图1-2)。

那么客户端又是什么呢?它是与另一个独立的进程相互通信的程序,后者通常运行在服务器上。

一般来说,服务器总是要比客户端大一些,能力强一些,配置更好一些,因为在服务器上通常要存储浩如烟海的信息。

js中action函数的用法

js中action函数的用法

js中action函数的用法一、什么是action函数?在Javascript中,action函数是一种用于创建和处理动作(action)的函数。

动作是一个简单的Javascript对象,它描述了发生的事件以及事件相关的数据。

通过使用action函数,可以定义和处理应用程序中的各种动作。

二、action函数的基本语法在大多数的Javascript库和框架中,action函数的基本语法如下:function actionCreator() {return {type: 'ACTION_TYPE',payload: 'ACTION_PAYLOAD'}}•actionCreator:action函数的名称,可以根据具体的需求进行命名。

•type:动作的类型,一般以大写字母和下划线组成的字符串表示。

•payload:可选的动作载荷,可以是任意类型的数据,用于传递额外的信息。

三、action函数的用途action函数通常用于:1.触发应用程序中的动作:通过调用action函数,可以在应用程序中触发各种动作,比如用户的点击、键盘的输入等。

例如,在一个购物网站中,当用户点击添加到购物车按钮时,可以调用一个名为addToCart的action函数来触发添加到购物车的动作。

2.传递数据给reducer函数:将action函数返回的动作对象传递给reducer函数,用于更新应用程序的状态。

reducer函数会根据动作的类型和载荷来更新状态。

例如,当用户点击添加到购物车按钮时,可以将动作对象{ type: 'ADD_TO_CART', payload: productId }传递给reducer函数,从而更新购物车的状态。

3.在组件中处理动作:通过将action函数与组件的事件绑定,可以在组件中处理相应的动作。

当事件触发时,可以调用相应的action函数来触发动作并传递相关的数据。

Struct2_使用Ajax调用Action方法并返回值

Struct2_使用Ajax调用Action方法并返回值

Struct2_使⽤Ajax调⽤Action⽅法并返回值⼀、Login.jsp1、<head>引⼊jquery:<script type="text/javascript"src="/ajax/jQuery/jquery-1.7.1.js"></script>2、界⾯控件:⽤户名:<input type="text"id="userName"><input type="button"id="btnAjax"value="Ajax调⽤"/>3、提交ajax请求<script type="text/javascript">$(function() {$("#btnAjax").click(function() {var userName = $("#userName").val().trim();if (userName == '') {alert("⽤户名不能为空");return false;}//login1为Action类命名空间名称;AjaxExecute为Action⽅法名称$.ajax({type : "post",url : '/login1/ajaxExecute',data : {//设置数据源userName : userName,password : "我是密码"},dataType : "json",//设置需要返回的数据类型success : function(d) {alert(d.sayHi);},error : function(d) {alert(d.responseText);}});});});</script>⼆、后台类:LoginActionNoNamespcepackage action;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;import org.apache.struts2.convention.annotation.Action;import space;import org.apache.struts2.convention.annotation.ParentPackage;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.interceptor.validation.SkipValidation;import freemarker.template.SimpleDate;@ParentPackage("json-default")@Namespace("/login1")public class LoginActionNoNamespce extends SuperActionSupport {private static final long serialVersionUID = 1L;private Map<String, String> dataMap;//会把本类所有getter⽅法序列化成字符串返回给jsp页⾯public Map<String, String> getDataMap() {return dataMap;}public void setDataMap(Map<String, String> dataMap) {this.dataMap = dataMap;}@SkipValidation@Action(value = "ajaxExecute", results = { @Result(type = "json", params = { "root", "dataMap" }) })public String ajaxExecute() throws Exception {this.dataMap = new HashMap<String, String>();// 参数名称必须和jsp的空间名称⼀⼀对应String userName = request.getParameter("userName");String password = request.getParameter("password");dataMap.put("isSuccess", "true");SimpleDateFormat now = new SimpleDateFormat("yyyy年MM⽉dd⽇ HH时mm分ss秒");dataMap.put("sayHi", "Hi:" + userName + " 当前时间为:" + now.format(new Date()) + password);return SUCCESS;}}三、注意事项1. 类注解:@ParentPackage("json-default"),⽐如为json-default,不能为struts-defaultjson-default是继承于structs-default的,见.m2\repository\org\apache\struts\struts2-json-plugin\2.3.16.3\struts2-json-plugin-2.3.16.3.jar\struts-plugin.xml2. Action注解:@Action(value = "ajaxExecute", results = { @Result(type = "json", params = { "root", "dataMap" }) }),这⾥的type必须为json、root是固定值,去掉params节点会返回undefined3. 这⾥的dataMap定义为:private Map<String, String> dataMap;必须要添加getter、setter参数,否则返回null4. JSP页⾯(这⾥可以⽤命名空间,如url : '/login1/ajaxExecute', @ParentPackage("json-default")这样设置就不会报错)5. maven管理,需要引⽤的库<dependencies><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.3.16</version><exclusions><exclusion><groupId>org.javassist</groupId><artifactId>javassist</artifactId></exclusion></exclusions></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-convention-plugin</artifactId><version>2.3.16.3</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-json-plugin</artifactId><version>2.3.16.3</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version></dependency></dependencies>。

jsp页面向action传值中文乱码的问题

jsp页面向action传值中文乱码的问题

JSP页面向action传值时中文乱码的问题,记得以前做项目的时候出现过,后来我到网上搜索了一系列的资料,把所有别人说要加的条件都加上去,稀里糊涂就解决了。

最近做一个项目,又遇到这个问题,我决定试一试究竟需要注意哪几点就可以解决乱码的问题。

下面是我的结论。

1>在页面首行<%@ page langusge=”java” import=”java.util.*”pageEncoding=”UTF-8”>2>将此句加上<meta http-equiv=”Content-Type” content=”text/html;charset=UTF-8” />。

这句的意思是文档类型为html,我试过,如果这句不加,有时候没问题,有时候只要打开这个页面,上面的中文直接乱码,还没等到传值给action。

只要在页面上加上上面两条,传值给action是没有中文乱码的问题的。

而且我在web.xml特意将<filter><filter-name>EncodingFilter</filter-name><filter-class>common.util.EncodingFilter</filter-class> <init-param><param-name>characterEncoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>enabled</param-name><param-value>false</param-value></init-param></filter><filter-mapping><filter-name>EncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>注释掉,依然没有乱码。

Ajax返回值乱码

Ajax返回值乱码

2010-08-27ajax返回值中有中文存在的乱码现象文章分类:Web前端ajax返回值中有中文存在的乱码现象,解决就加入下面一行代码即可response.setContentType("text/html;charset=UTF-8");我在网上找遍了解决乱码问题资料,可没有一个能行的通,无奈只好自己研究!其实解决的方法很简单,具体如下:将客户端文件的编码设置为GB2312,如下面代码所示:Html代码1.<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />在发送的URL地址中的查询字符串或者是使用POST方式发送的请求内容不要使用escape函数进行编码,切记!在服务器端的jsp文件也设置为gb2312编码格式,如下面代码所示:jsp 代码1.或者设置response的头,如下面代码所示:java 代码1.response.setHeader("Content-Type","text/html; charset=gb2312");两者原理是一样的。

最着关键的是在获取参数时应该对获取字符串进行重新编码,如下面代码所示:java 代码1.String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"GB2312");其中,username为接收的参数。

直接使用out.print(username);就可以将中文返回给客户端,在客户端直接使用xmlHttp.responseText属性就可以直接使用返回的中文了!附件中我测试用的一个小例子,在tomcat6.0和resin2.1.8中通过测试!其实,还有一个一劳永逸的解决方案,就是添加一个过滤器。

JSP中文乱码问题解决办法

JSP中文乱码问题解决办法

JSP中文乱码问题解决办法当用request对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊处理。

常见的几种字符集编码:⏹ASCII码:不支持中文⏹ISO-8859-1:不支持中文⏹GB2313、GBK:支持中文⏹Unicode:支持中文⏹UTF-8:支持中文在解决JSP中文乱码问题前,弄清以下几点:(1) windows平台采用的默认字符集编码是:GBK(2) IE浏览器默认采用UTF-8字符集编码方式发送Http请求。

(3) Tomcat在处理Get请求时,永远采用ISO-8859-1编码;Tomcat在处理Post请求时,默认采用ISO-8859-1编码;如果进行了如下设置request.setCharacterEncoding(“GBK”),则采用GBK编码。

可以使用如下几种方式解决JSP中文乱码问题。

1、方法一:调用自定义的转换函数<%@page contentType="text/html;charset=GB2312"%><%!public String getStr(String s) {String str = s;try {byte[] b = str.getBytes("ISO-8859-1");str = new String(b);return str;} catch (Exception e) {return str;}}%>使用内置对象request将获取的数据,使用ISO-8859-1进行重新编码,并保存到一个字节数组中,然后调用new String()方法,以GBK方式将这个字节数组构造出一个新的字符串,这个新的字符串就是我们想要的结果。

适用于以下三种情况:(1) 以Get方式提交表单,提交的数据中包含汉字字符。

(2) 以Post方式提交表单,提交的数据中包含汉字字符。

jquery-ajax中文乱码

jquery-ajax中文乱码

结论:jquery 1.3.2 ajax对编码问题进行过部分(见后面补充1 )处理,解决方案以jsp 为例子:ajax提交数据给jsp:ajax所在页面无任何要求,jsp页面需作两方面处理。

1.<%@page contentType="application/json" pageEncoding="UTF-8"%>或<%@page contentType="application/json" pageEncoding="gb2312"%>2.处理request.setCharacterEncoding("UTF-8")详细说明:之所以会乱码,原因很简单,两个人对话的时候,a说中文,b用英文接受,于是乎乱码矣!所以当出现乱码搞清楚谁是a谁是b很重要,然后a说话的时候让b知道应该用什么语言接收,或者b以固定的方式接收,a用b接收的语言去说,这样就万事ok了。

所以下面分成两部分去分析。

一个是ajax单纯获取网页信息的情况,一个是ajax单纯往jsp等提交数据的情况,细的来说,这里种情况有分两种情况即post和getajax单纯抓取网页a:请求的页面,b:jquery ajax这里为什么a是请求的页面,而b是jquery ajax呢?虽然是ajax向页面要东西,但是也可以理解为a(页面)要告诉ajax的内容是什么,于是乎a说,我告诉你b(jquery ajax),我的内容是......并且内容的语言是gb2312的,你来接受吧。

于是b就根据他的编码格式接收了a的内容,于是就没乱码了。

看一下下面的表格首先说明,上面说的页面编码,是指文件字符编码,而不是html里面<meta>标签内的charset=gb2312。

根据以上数据显示:ajax抓去网页的时候,乱码问题与当前页面(ajax所在页面)无关。

AJAX乱码解决大全

AJAX乱码解决大全

1、编码编码比较常用的有: UTF-8, GBK, GB2312, ISO-8859-1,除了 iso-8859-1之外的其它三个编码都能很好的支持中文,但它们都兼容 ISO-8859-1的编码(就是说无论编码怎么改变,只要是 ISO-8859-1中的字符,永远不会出现乱码)。

这四种编码中, GB2312是中国规定的汉字编码,也可以说是简体中文的字符集编码;GBK 是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名;而 UTF-8虽然也支持中文,但却与GB码不兼容(编码值不同)。

UTF-8使用的是可变长的 UNICODE编码,编码可能是 1位 16进制(即 ISO-8859-1中的字符,其编码也是相同的)也有可能是 2位或 3位的 16进制。

UTF-8的优点是:1、与CPU字节顺序无关 , 可以在不同平台之间交流。

2、容错能力高 , 任何一个字节损坏后 , 最多只会导致一个编码码位损失 , 不会链锁错误 (如 GB 码错一个字节就会整行乱码 ),所以在国际化处理中基本都是建议使用 UTF-8作为编码。

2、文件的编码文件编码最常使用的有两种:ANSI和UTF-8,光看名字估计你都可以猜到了,ANSI就是我们保存文件时使用的默认编码,而UTF-8则需自己设置。

对于编码的改变,我使用的工具是NOTEPAD和ECLIPSE,NOTEPAD使用最简单,只要打开文件后在另存为中选择相应的编码就行了,而且它对编码的支持非常好;而在ECLIPSE中,只要稍微设置一下就行了,打开首选项,然后选择:常规->内容类型(ContentType),在右边选中你想改变保存编码的文件类型,然后在下方的缺省编码中改变其值,最后点击更新(UPDATE)按钮即可。

而在其它的编辑器中,默认保存的内容都是GB2312或者GBK(NOTEPAD中对应ANSI).而根据前面所说的UTF-8和GBK,GB2312等的编码值是不同的这一点,可以知道,如果文件使用了UTF-8,那么字符编码就必须使用UTF-8,否则编码值的不同就可能造成乱码。

AJAX中文乱码 问题分为两大类

AJAX中文乱码 问题分为两大类
解决办法:在服务器指定发送数据的格式:
在jsp文件中:
response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
或是
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件
如果上述方法仍然解决不了乱码问题,那你尝试一下把jsp,htm,java文件用UTF-8编码格式保存.
总之:前后台数据交互都采用utf-8编码就行了.
服务器端:
String name = request.getParameter("name");
name = .URLDecoder.decode(name, "UTF-8");
2)返回来的responseText或responseXML的值中含有中文是乱码
原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。
总结:1)ajax提交数据的格式默认为utf-8,利用javascript的提供的escape()或encodeURI()方法.在服务器端接收的时候要使用.URLDecoder.decode("","UTF-8")方法进行解码.
2)xtmlhttp 返回的数据默认的字符编码是utf-8,所以服务器要向客户端发送数据的时候,也要采用utf-8编码
功能和encodeURI方法类似。
/********************************************/

JSP中文乱码的产生原因及解决方案

JSP中文乱码的产生原因及解决方案

JSP中文乱码的产生原因及解决方案在JSP的开发过程中,经常出现中文乱码的问题,可能一直困扰着大家,现在把JSP 开发中遇到的中文乱码的问题及解决办法写出来供大家参考。

首先需要了解一下Java中文问题的由来:Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。

原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。

首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。

基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312或-ecoding UTF-8编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。

下面是一些常见中文乱码问题的解决方法(下面例子中ecoding采用的是gb2312,也可设为ecoding GBK或ecoding UTF-8):一、JSP页面乱码这种乱码问题比较简单,一般是页面编码不一致导致的乱码,一般新手容易出现这样的问题,具体分以下两种情况:➢未指定使用字符集编码下面的显示页面(display.jsp)就出现乱码:<html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html charset=gb2312"> </head><body><%out.print("JSP的中文处理");%></body>这种乱码的原因是没有在页面里指定使用的字符集编码,JSP页面中出现了中文字符,而默认的ISO-8859-1字符集中无中文字符,解决方法:只要在页面开始地方用下面代码指定字符集编码即可,在JSP页面中指定编码方式(gb2312),和浏览器解码方式设置相同,即在页面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>,就可以消除乱码了。

jsp中文传参乱码问题

jsp中文传参乱码问题

String title= request.getParameter("title");
title= new String( title.getBytes("iso-8859-1"), "UTF-8");
System.out.println(title);
}
二、为编码为UTF-8的JSP页面传参,对于中文乱码的解决分为两种情况:
1.通过GET方式传参,通过new String(request.getParameter("").getBytes("ISO-8859-1"),"UTF-8"); 的方式转换为需要的编码,如UTF-8等。
一、在请求页面的请求参数需要用encodeURI进行转码,然后在接收请求的页面需要进行字符集转换。
本例中的请求和接收页面的字符集都是UTF-8:
1.请求的JSP页面用JavaScript的encodeURI()方法将参数转码:
function toView(param){
var encodeparam = encodeURI(param) ;
window.location.href="/naias/advAna_form.do?method=showDetail&title="+encodepara进行字符集转换:
public ActionForward excute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){

解决ajas中文乱码问题

解决ajas中文乱码问题

解决AJAX传送中文会导致乱码的问题//如果传送参数是直接赋予的,就会产生乱码!http_request.open("POST",url,true);http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');http_request.send("action="+strName+"&val="+val); //如果val的值为中文,则产生乱码//解决方法很简单:使用javascript中的escape(string) 函数http_request.open("POST",url,true);http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');http_request.send("action="+strName+"&val="+escape(val)); //val的值为中文不会产生乱码关于在AJAX中GET回的ResponseText中文乱码的最简解决办法用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");=======================================================/***********本人原创,欢迎转载,转载请保留本人信息*************/作者:王力猛 (wallimn)电邮:wallimn@博客:时间:2006-11-15/***********本人原创,欢迎转载,转载请保留本人信息*************/今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。

js中action函数的用法

js中action函数的用法

js中action函数的用法在 JavaScript 中,action 函数通常用于处理事件。

它是一个函数,可以在用户执行特定操作时触发,例如点击按钮、在文本框中键入文本等。

此时,action 函数将被调用,并且可以通过该函数执行相应的操作。

下面是一个简单的示例:```html<button onclick="myFunction()">点击我</button><script>function myFunction() {alert("Hello World!");}</script>```在上面的示例中,当用户单击按钮时,`myFunction()` 函数会执行,弹出一个对话框显示 "Hello World!"。

除了使用内联事件处理程序(即在 HTML 中将函数命名为属性值)之外,您还可以使用 JavaScript 中的事件监听器来将函数添加到事件中。

以下是一个示例:```html<button id="myButton">点击我</button><script>document.getElementById("myButton").addEventListener("click",myFunction);function myFunction() {alert("Hello World!");}</script>```在上面的示例中,使用 `addEventListener` 函数将 `myFunction` 函数添加到按钮的单击事件中。

这种方法比内联事件处理程序更灵活,因为您可以轻松地添加和删除事件监听器,而无需编辑 HTML。

JSP中AJAX表单提交中文问题的简单解决方案(GBK版本)

JSP中AJAX表单提交中文问题的简单解决方案(GBK版本)

测试通过: Resin 3.0.18, Tomcat 5.0.30, 5.5.20; 浏览器: IE 6/Firefox 2.0.上一篇文章JSP 中AJAX 的表单提交中文问题的简单解决方案主要是针对UTF-8 版本的进行处理的, 鉴于中国大陆地区大部分还是用GBK 编码写JSP, 因此本文就针对GBK 的实践结果进行介绍.有朋友提到当AJAX遭遇GBK的尴尬里说当AJAX 使用GBK 编码后, 表单提交将出现乱码. 如前文所述, 只要全部采用UTF-8 编码, 是没有任何问题的. 那么都用GBK 呢?首先要讲的是我们的文章还是一样的原则: 尽可能少的改动原来的代码来解决中文乱码问题. 所以本文的示例没有用过滤器等方法.那么使用GBK 编码到底有没有乱码问题呢?第一个关键点就是AJAX 的表单提交代码必须正确的按照HTTP 规范实现, 即要保持原来的GET/POST 方式不变,也要保持里面的内容和浏览器提交的内容一摸一样. 以下内容摘自我编写的内部培训教材:----------------- 引用开始-----------------首先必须要介绍一下HTTP 协议和GET, POST 的工作方式.当用户在Web浏览器地址栏中输入一个带有http://前缀的URL并按下Enter后,或者在Web页面中某个以http://开头的超链接上单击鼠标,HTTP事务处理的第一个阶段--建立连接阶段就开始了.HTTP的默认端口是80.随着连接的建立,HTTP就进入了客户向服务器发送请求的阶段.客户向服务器发送的请求是一个有特定格式的ASCII 消息,其语法规则为:请求消息的顶端是请求行,用于指定方法,URL和HTTP协议的版本,请求行的最后是回车换行.方法有GET,POST,HEAD,PUT,DELETE等.在请求行之后是若干个报头(Header)行.每个报头行都是由一个报头和一个取值构成的二元对,报头和取值之间以":"分隔; 报头行的最后是回车换行. 常见的报头有Accept(指定MIME媒体类型),Accept_Charset(响应消息的编码方式),Accept_Encoding(响应消息的字符集),User_Agent(用户的浏览器信息)等.在请求消息的报头行之后是一个回车换行,表明请求消息的报头部分结束.在这个\n之后是请求消息的消息实体(Entity Body).Web服务器在收到客户请求并作出处理之后,要向客户发送应答消息.与请求消息一样,应答消息的语法规则为:应答消息的第一行为状态行,其中包括了HTTP版本号,状态码和对状态码进行简短解释的消息;状态行的最后是回车换行.状态码由3位数字组成,有5类:∙1XX 保留∙2XX 表示成功∙3XX 表示URL已经被移走∙4XX 表示客户错误∙5XX 表示服务器错误例如:415,表示不支持改媒体类型;503,表示服务器不能访问.最常见的是200,表示成功.常见的报头有:Last_Modified (最后修改时间),Content_Type(消息内容的MIME类型),Content_Length(内容长度)等.在报头行之后也是一个回车换行,用以表示应答消息的报头部分的结束,以及应答消息实体的开始.下面是一个应答消息的例子:那么GET 和POST 有什么区别? 区别就是一个在URL 请求里面附带了表单参数和值, 一个是在HTTP 请求的消息实体中.用下面的例子可以很容易的看到同样的数据通过GET和POST来发送的区别, 发送的数据是username=张三:GET 方式, 浏览器键入http://localhost?username=张三POST 方式:比较一下上面的两段文字, 您会发现GET 方式把表单内容放在前面的请求头中, 而POST 则把这些内容放在请求的主体中了, 同时POST 中把请求的Content-Type 头设置为application/x-www-form-urlencoded. 而发送的正文都是一样的,可以这样来构造一个表单提交正文:encodeURIComponent(arg1)=encodeURIComponent(value1)&encodeURIComponent(arg2)=encodeURIComponent(value2)&.....注: encodeURIComponent返回一个包含了charstring内容的新的String对象(Unicode 格式),所有空格、标点、重音符号以及其他非ASCII 字符都用%xx编码代替,其中xx等于表示该字符的十六进制数。

jQueryajax方法传递中文时出现中文乱码的解决方法

jQueryajax方法传递中文时出现中文乱码的解决方法

jQueryajax⽅法传递中⽂时出现中⽂乱码的解决⽅法本⽂实例讲述了jQuery ajax⽅法传递中⽂时出现中⽂乱码的解决⽅法。

分享给⼤家供⼤家参考,具体如下:使⽤jQuery的ajax⽅法,在传递中⽂时出现中⽂乱码,按照以前的⽅法,修改了jquery⽂件中的ajaxSetting也不好使复制代码代码如下:sajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded;charset=UTF-8",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest}也不好使,即使在Ajax中加上复制代码代码如下:contentType: "application/x-www-form-urlencoded;charset=UTF-8",也不起作⽤,后来发现,没有加上type:'POST',加上就好了,另外,最好在jsp中修改chartset和pagingEncoding为UTF-8<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>同时在java代码中在使⽤⼀下response.setCharacterEncoding("UTF-8");更多关于jQuery相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家jQuery程序设计有所帮助。

asp结合ajax中文乱码问题-电脑资料

asp结合ajax中文乱码问题-电脑资料

asp结合ajax中文乱码问题-电脑资料XMLHttpRequest 在w3c标准中这样提到:如果响应包含了为响应体指定字符编码的头部,就使用该编码,。

否则,假定使用 Unicode UTF-8.前端页面sele.asp<" CODEPAGE="936"%>项目信息将在此处列出。

selectcustomer.js页面// JavaScript. Documentvar xmlHttpfunction showCustomer(str){xmlHttp=GetXmlHttpObject();if (xmlHttp==null){alert ("您的浏览器不支持AJAX!");return;}var url="getcustomer.asp";url=url+"?q="+str;url=url+"&sid="+Math.random();xmlHttp.onreadystatechange=stateChanged;xmlHttp.open("get",url,true);xmlHttp.send(null);}function stateChanged(){if (xmlHttp.readyState==4){document.getElementById("txtHint"),电脑资料《asp结合ajax中文乱码问题》(https://www.)。

innerHTML=xmlHttp.responseText;}}function GetXmlHttpObject(){var xmlHttp=null;try{// Firefox, Opera 8.0+, SafarixmlHttp=new XMLHttpRequest();}catch (e){// Internet Explorertry{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}}return xmlHttp;}后端getcustomer.asp页面<%Response.Charset="GB2312"Response.ContentType="text/html" '加入红色显示的两句就可以解决问题response.expires=-1strSQL = "select ProjName from Proj where ProjName like '%"&request.querystring("q")&"%'"Response.Write(strsql)Set RS = Server.CreateObject("ADODB.RecordSet")RS.open strSQL,Conn,1,1response.write("")while not rs.eofresponse.write("")response.write(""&rs("ProjName")&"")response.write("")response.write("")response.write("")rs.MoveNextwendresponse.write("")%>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档