广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Ajax传输中文乱码问题怎么解决
  • 398
分享到

Ajax传输中文乱码问题怎么解决

2024-04-02 19:04:59 398人浏览 八月长安
摘要

这篇文章主要介绍“ajax传输中文乱码问题怎么解决”,在日常操作中,相信很多人在Ajax传输中文乱码问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ajax传输中文

这篇文章主要介绍“ajax传输中文乱码问题怎么解决”,在日常操作中,相信很多人在Ajax传输中文乱码问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ajax传输中文乱码问题怎么解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

AJAX简介

AJAX = Asynchronous javascript and XML(异步的 JavaScript 和 XML)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。

ajax传输中文乱码问题描述:

  我是在一个jsp页面有一个保存按钮,点击时会触发saveFORM()的js函数,在saveForm()函数里经过校验后,会通过ajax发送数据请求,这样就不用通过提交表单来传输数据了,ajax估计就是这样的好处吧,目前对ajax还不太熟悉。

ajax传输乱码时的代码:

function saveForm(){
if(document.theformadd.onsubmit()){
disableAllBtn(true);
j$.ajax({
type:"get",
url:"add_form_do.jsp",
data:{
problem_id : j$("#problem_id").val(),
product_id : "<%=product_id%>",
productId : j$("#productId").val(),
depart_id : j$("#depart_id").val(),
fk_busi_id : j$("#fk_busi_id").val(),
fk_type : j$("#fk_type").val(),
fk_source : j$("#fk_source").val(),
fk_info : j$("#fk_info").val(),
fk_name : j$("#fk_name").val(),
fk_bank_name : j$("#fk_bank_name").val(),
fk_bank_acct : j$("#fk_bank_acct").val(),
sk_name : j$("#sk_name").val(),
sk_bank_name : j$("#sk_bank_name").val(),
sk_bank_acct : j$("#sk_bank_acct").val(),
fk_money : j$("#fk_money").val(),
fk_summary : j$("#fk_summary").val(),
fk_date : j$("#fk_date").val(),
input_man : "<%=input_operatorCode%>"
},
success:function(ret){
if(ret == 1) {
sl_alert("保存成功!");
}else{
sl_alert(ret);
}
window.returnValue=true;
window.close();
}
});
}
}

然后我们在add_form_do.jsp中获取数据

<%@ page contentType="text/html; charset=GBK" import="java.math.*,com.enfo.intrust.intrust.vo.*,java.io.*, com.enfo.intrust.WEB.*,java.util.*,com.enfo.intrust.dao.*,com.enfo.intrust.intrust.*,com.enfo.intrust.tools.*,com.enfo.intrust.project.*" %>
<script type="text/javascript" src="<%=request.getContextPath()%>/ext2.0/ext-base.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/ext2.0/ext-all.js"></script>
<%@ include file="/includes/operator.inc" %>
<%
try{
product_id = Utility.parseInt(Utility.trimNull(request.getParameter("product_id")),product_id);
UnpostwarrantLocal local = EJBFactory.getUnpostwarrant();
Integer problem_id = Utility.parseInt(request.getParameter("problem_id"),new Integer(0));
Integer depart_id = Utility.parseInt(request.getParameter("depart_id"),new Integer(0)); //部门
Integer productId = Utility.parseInt(Utility.trimNull(request.getParameter("productId")),product_id);
String fk_busi_id = Utility.trimNull(request.getParameter("fk_busi_id")); //字典1206 费用
String fk_type = Utility.trimNull(request.getParameter("fk_type")); //付款方式 2103
String fk_source = Utility.trimNull(request.getParameter("fk_source")); //付款依据 2104
String fk_info = Utility.trimNull(request.getParameter("fk_info")); //票据号码
String fk_name = Utility.trimNull(request.getParameter("fk_name")); //付款单位
String fk_bank_name = Utility.trimNull(request.getParameter("fk_bank_name")); //付款银行名称
String fk_bank_acct = Utility.trimNull(request.getParameter("fk_bank_acct")); //付款银行账号
String sk_name = Utility.trimNull(request.getParameter("sk_name")); //收款单位
String sk_bank_name = Utility.trimNull(request.getParameter("sk_bank_name")); //收款银行名称
String sk_bank_acct = Utility.trimNull(request.getParameter("sk_bank_acct")); //收款银行账号
BigDecimal fk_money = Utility.parseDecimal(Utility.trimNull(request.getParameter("fk_money")).replaceAll(",",""),new BigDecimal(0)); //金额
String fk_summary = Utility.trimNull(request.getParameter("fk_summary")); //备注
Integer fk_date = Utility.parseInt(request.getParameter("fk_date"),new Integer(Utility.getCurrentDate())); //要求付款日期
local.setProblem_id(problem_id);
//local.setProduct_id(product_id);
local.setProduct_id(productId);
local.setDepart_id(depart_id);
local.setFk_busi_id(fk_busi_id);
local.setFk_type(fk_type);
local.setFk_source(fk_source);
local.setFk_info(fk_info);
local.setFk_name(fk_name);
local.setFk_bank_name(fk_bank_name);
local.setFk_bank_acct(fk_bank_acct);
local.setSk_name(sk_name);
local.setSk_bank_name(sk_bank_name);
local.setSk_bank_acct(sk_bank_acct);
local.setFk_money(fk_money);
local.setFk_summary(fk_summary);
local.setFk_date(fk_date);
local.setInput_man(input_operatorCode);
local.addFinacialcardInfoGuotou();
out.clear();
response.getWriter().write("1");
}catch(Exception e){
out.clear();
response.getWriter().write(e.getMessage());
}
%>

这时候我接受到的数据会是中文乱码,不管传输方式是get,还是post都会中文乱码

解决方案:

  我们可以在传输时对数据重新编码,然后在接受数据时重新解码。其实乱码的问题就是编码格式冲突,导致解码的密钥对之前格式解析错误,导致乱码。在传输时,在需要传输中文数据前面加一个encodeURI()编码,例如:encodeURI(j$("#fk_info").val());在接受需要中文数据的前面加一个java.net.URLDecoder.decode(value, "UTF-8"),例如
String fk_bank_name = Utility.trimNull(request.getParameter("fk_bank_name")); String trans = java.net.URLDecoder.decode(fk_bank_name, "UTF-8");
具体修改后的全部代码如下:

修复后ajax传输的代码:

function saveForm(){
if(document.theformadd.onsubmit()){
disableAllBtn(true);
j$.ajax({
type:"get",
url:"add_form_do.jsp",
data:{
problem_id : j$("#problem_id").val(),
product_id : "<%=product_id%>",
productId : j$("#productId").val(),
depart_id : j$("#depart_id").val(),
fk_busi_id : j$("#fk_busi_id").val(),
fk_type : j$("#fk_type").val(),
fk_source : j$("#fk_source").val(),
fk_info : encodeURI(j$("#fk_info").val()),
fk_name : encodeURI(j$("#fk_name").val()),
fk_bank_name : encodeURI(j$("#fk_bank_name").val()),
fk_bank_acct : encodeURI(j$("#fk_bank_acct").val()),
sk_name : encodeURI(j$("#sk_name").val()),
sk_bank_name : encodeURI(j$("#sk_bank_name").val()),
sk_bank_acct : encodeURI(j$("#sk_bank_acct").val()),
fk_money : j$("#fk_money").val(),
fk_summary : encodeURI(j$("#fk_summary").val()),
fk_date : j$("#fk_date").val(),
input_man : "<%=input_operatorCode%>"
},
success:function(ret){
if(ret == 1) {
sl_alert("保存成功!");
}else{
sl_alert(ret);
}
window.returnValue=true;
window.close();
}
});
}
}

修复后add_form_do.jsp中获取数据:

<%@ page contentType="text/html; charset=GBK" import="java.math.*,com.enfo.intrust.intrust.vo.*,java.io.*, com.enfo.intrust.web.*,java.util.*,com.enfo.intrust.dao.*,com.enfo.intrust.intrust.*,com.enfo.intrust.tools.*,com.enfo.intrust.project.*" %>
<script type="text/javascript" src="<%=request.getContextPath()%>/ext2.0/ext-base.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/ext2.0/ext-all.js"></script>
<%@ include file="/includes/operator.inc" %>
<%
try{
product_id = Utility.parseInt(Utility.trimNull(request.getParameter("product_id")),product_id);
UnpostwarrantLocal local = EJBFactory.getUnpostwarrant();
Integer problem_id = Utility.parseInt(request.getParameter("problem_id"),new Integer(0));
Integer depart_id = Utility.parseInt(request.getParameter("depart_id"),new Integer(0)); //部门
Integer productId = Utility.parseInt(Utility.trimNull(request.getParameter("productId")),product_id);
String fk_busi_id = Utility.trimNull(request.getParameter("fk_busi_id")); //字典1206 费用
String fk_type = Utility.trimNull(request.getParameter("fk_type")); //付款方式 2103
String fk_source = Utility.trimNull(request.getParameter("fk_source")); //付款依据 2104
String fk_info = Utility.trimNull(request.getParameter("fk_info")); //票据号码
String fk_name = Utility.trimNull(request.getParameter("fk_name")); //付款单位
String fk_bank_name = Utility.trimNull(request.getParameter("fk_bank_name")); //付款银行名称
String fk_bank_acct = Utility.trimNull(request.getParameter("fk_bank_acct")); //付款银行账号
String sk_name = Utility.trimNull(request.getParameter("sk_name")); //收款单位
String sk_bank_name = Utility.trimNull(request.getParameter("sk_bank_name")); //收款银行名称
String sk_bank_acct = Utility.trimNull(request.getParameter("sk_bank_acct")); //收款银行账号
BigDecimal fk_money = Utility.parseDecimal(Utility.trimNull(request.getParameter("fk_money")).replaceAll(",",""),new BigDecimal(0)); //金额
String fk_summary = Utility.trimNull(request.getParameter("fk_summary")); //备注
Integer fk_date = Utility.parseInt(request.getParameter("fk_date"),new Integer(Utility.getCurrentDate())); //要求付款日期
local.setProblem_id(problem_id);
//local.setProduct_id(product_id);
local.setProduct_id(productId);
local.setDepart_id(depart_id);
local.setFk_busi_id(fk_busi_id);
local.setFk_type(fk_type);
local.setFk_source(fk_source);
local.setFk_info(java.net.URLDecoder.decode(fk_info, "UTF-8"));
local.setFk_name(java.net.URLDecoder.decode(fk_name, "UTF-8"));
local.setFk_bank_name(java.net.URLDecoder.decode(fk_bank_name, "UTF-8"));
local.setFk_bank_acct(java.net.URLDecoder.decode(fk_bank_acct, "UTF-8"));
local.setSk_name(java.net.URLDecoder.decode(sk_name, "UTF-8"));
local.setSk_bank_name(java.net.URLDecoder.decode(sk_bank_name, "UTF-8"));
local.setSk_bank_acct(java.net.URLDecoder.decode(sk_bank_acct, "UTF-8"));
local.setFk_money(fk_money);
local.setFk_summary(java.net.URLDecoder.decode(fk_summary, "UTF-8"));
local.setFk_date(fk_date);
local.setInput_man(input_operatorCode);
local.addFinacialcardInfoGuotou();
out.clear();
response.getWriter().write("1");
}catch(Exception e){
out.clear();
response.getWriter().write(e.getMessage());
}
%>

注意事项:

  如果是接受数据不是jsp页面,而是Java类的时候,只需要URLDecoder.decode(value, "UTF-8");来解码,然后导入相应的包。还有传输时可能需要两次编码encodeURI(encodeURI(j$("#fk_info").val())),具体原因是我们通过request.getParameter()来获取数据时就会进行一次解码操作,解码时不变。

到此,关于“Ajax传输中文乱码问题怎么解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Ajax传输中文乱码问题怎么解决

本文链接: https://www.lsjlt.com/news/78261.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Ajax传输中文乱码问题怎么解决
    这篇文章主要介绍“Ajax传输中文乱码问题怎么解决”,在日常操作中,相信很多人在Ajax传输中文乱码问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ajax传输中文...
    99+
    2022-10-19
  • Ajax请求中传输中文乱码问题怎么解决
    本篇内容主要讲解“Ajax请求中传输中文乱码问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ajax请求中传输中文乱码问题怎么解决”吧!今天遇到一个问...
    99+
    2022-10-19
  • ajax中文乱码问题怎么解决
    本篇内容主要讲解“ajax中文乱码问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax中文乱码问题怎么解决”吧! a...
    99+
    2022-10-19
  • 怎么解决ajax传到后台php中文乱码问题
    这篇文章将为大家详细讲解有关怎么解决ajax传到后台php中文乱码问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ajax传到后台php中文乱码的解决办法:1、设置“iconv('ut...
    99+
    2023-06-22
  • PHP怎么解决AJAX中文乱码问题
    这篇文章主要介绍“PHP怎么解决AJAX中文乱码问题”,在日常操作中,相信很多人在PHP怎么解决AJAX中文乱码问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP怎么解...
    99+
    2022-10-19
  • 怎么解决ajax乱码问题
    这篇文章给大家分享的是有关怎么解决ajax乱码问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。上网找了一些资源,才弄明白这是编码的问题,我的服务器端发送过来的数据是GB2312...
    99+
    2022-10-19
  • 如何解决AJAX中文乱码问题
    本篇内容介绍了“如何解决AJAX中文乱码问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • 怎么解决spring mvc通过jQuery ajax传值中文乱码的问题
    本篇内容主要讲解“怎么解决spring mvc通过jQuery ajax传值中文乱码的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决spring m...
    99+
    2022-10-19
  • 如何解决ajax传到后台php中文乱码问题
    本文操作环境:Windows7系统,PHP7.1版,Dell G3电脑。如何解决ajax传到后台php中文乱码问题?PHP中AJAX应用中文乱码解决方法web应用开发中经常出现中文乱码情况!今天主要整理下思路:出现乱码的大多数情况是我们进行...
    99+
    2016-02-15
    ajax php
  • php怎么解决url中文传参乱码问题
    本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。php怎么解决url中文传参乱码问题?php url地址栏传中文乱码解决方法集合php地址栏传中文$_GET下来后乱码,urlencode和urldecode用法详解u...
    99+
    2018-12-07
    php url 中文乱码
  • 怎么解决发送ajax乱码问题
    本篇内容主要讲解“怎么解决发送ajax乱码问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决发送ajax乱码问题”吧! 发送...
    99+
    2022-10-19
  • PHP解决输出中文乱码问题讲解
    解决 PHP 输出中文乱码的问题 问题描述 今天给导航狗(https://daohanggou.cn/)的 PHP 程序和数据库文件迁移了服务器, 但是迁移到新的服务器上之后 PHP...
    99+
    2022-11-12
  • AJAX中文乱码怎么解决
    本篇内容介绍了“AJAX中文乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!复制代码 代码如下:...
    99+
    2022-10-19
  • 怎么解决php ajax返回乱码问题
    本篇内容主要讲解“怎么解决php ajax返回乱码问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决php ajax返回乱码问题”吧!php ajax返回乱码的解决办法:1、在php的a...
    99+
    2023-06-25
  • 彻底解决IDEA输出中文乱码问题
    本文一共有3种方法,针对的情况是输出中文乱码问题 问题描述 无法正确输出中文字符:(请正确分辨自己是哪一种乱码问题!) 解决方法 1、最容易想到 File -> Settings -> File Encodings下设置编码格式为UTF-...
    99+
    2023-08-30
    intellij-idea tomcat java
  • PHP怎么解决中文乱码问题
    这篇文章主要介绍“PHP怎么解决中文乱码问题”,在日常操作中,相信很多人在PHP怎么解决中文乱码问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP怎么解决中文乱码问题”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • 怎么解决Suse中文乱码问题
    怎么解决Suse中文乱码问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。随着我们学习Suse linux的深入,我们也面临着很多问题,今天所要讲的是Suse中文乱码问题,Su...
    99+
    2023-06-17
  • jsp中文乱码问题怎么解决
    这篇文章主要介绍“jsp中文乱码问题怎么解决”,在日常操作中,相信很多人在jsp中文乱码问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jsp中文乱码问题怎么解决”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-30
  • 怎么解决FireFTP中文乱码问题
    怎么解决FireFTP中文乱码问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。FireFTP是一个Firefox浏览器插件,用Firefox浏览器的人肯定知道,但是在用的时候...
    99+
    2023-06-16
  • 怎么解决php qrcode 输出乱码问题
    本篇内容介绍了“怎么解决php qrcode 输出乱码问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php qrcode输出乱码的解决方...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作