解决Ajax前台中文传到后台出现中文乱码
遇到的问题是: 前台利用Ajax, get方式向后台发送中文数据出现乱码.
解决办法是前台两次编码, 后台一次解码即可.
前台jsp文件
1 var text = "张三";
3 var username = encodeURI(encodeURI(text));
后台servlet代码
 String username =URLDecoder.decode("对应字段","utf-8");
简单登录校验案例.
案例说明:为验证Ajax请求后端控制台中文乱码问题是否解决.
简单登录界面, 用户输入用户名登录. 若用户名未输入用户名则提示"用户名不能为空";若用户名输入为"张三"则提示用户名已被占用.其它均无提示.
前台页面index.jsp
<%--
Created by IntelliJ IDEA.
User: hejjon
Date: 2019/6/3
Time: 10:19
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>用户登录界面</title>
<script type="text/javascript">
var xhr;
function change() { var val = document.getElementById("uname").value;
var uname = encodeURI(encodeURI(val)); if (uname === "") {
document.getElementById("namespan").innerHTML = "用户名不能为空";
} else {
// 创建xhr对象
xhr = new XMLHttpRequest();
// 与服务器建立连接
xhr.open("get", "servlet/login?uname=" + uname, true);
// 执行回调函数
xhr.onreadystatechange = process;
// 发送数据
xhr.send(null);
} } function process() {
if (xhr.readyState == 4 && xhr.status == 200) {
// 接收后台响应
var text = xhr.responseText;
document.getElementById("namespan").innerHTML = text;
}
}
</script>
</head>
<body>
<p>
用户: <input type="text" name="uname" id="uname" onblur="change()"/><span id="namespan"></span>
</p>
<p>
密码: <input type="password" name="pwd" id="pwd"/>
</p>
</body>
</html>
后台LoginServlet.java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder; @WebServlet("/servlet/login")
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置后台响应文本格式
resp.setContentType("text/html;charset=utf-8");
// 接收前台请求
String uname = URLDecoder.decode(req.getParameter("uname")); // System.out.println(uname); PrintWriter out = resp.getWriter();
if ("张三".equals(uname)) {
out.print("用户名已被占用");
} else {
out.print("用户名可用");
}
}
}
解决Ajax前台中文传到后台出现中文乱码的更多相关文章
- 解决Spring boot中读取属性配置文件出现中文乱码的问题
		
问题描述: 在配置文件application.properties中写了 server.port=8081 server.servlet.context-path=/boy name=张三 age=2 ...
 - 如何解决jQuery easyui中locale文件下easyui-lang-zh_CN中文乱码问题
		
1.在保存eclipse项目的目录下找到引入easyui-lang-zh_CN.js 2.用记事本打开该js文件,若打开后的中文正常,直接复制,粘贴到项目中的该js文件中,保存 3.若打开后中文出现乱 ...
 - resin后台输出中文乱码的解决办法!
		
resin后台输出中文乱码的解决办法! 学习了:https://blog.csdn.net/kobeguang/article/details/34116429 编辑conf/resin.con文件: ...
 - 解决ubuntu中zip解压的中文乱码问题
		
转自解决ubuntu中zip解压的中文乱码问题 在我的ubuntu12.10中,发现显示中文基本都是正常的,只有在解压windows传过来的zip文件时,才会出现乱码.所以,我用另一个方法解决中文乱码 ...
 - resin后台输出中文乱码的解决的方法!
		
近期从tomcat移植到resin,发现这东西不错啊! 仅仅是后台输出时有时候中文会乱码. 如今找到resin后台输出中文乱码的解决的方法: 编辑conf/resin.con文件: <!--ja ...
 - python基础系列教程——Python中的编码问题,中文乱码问题
		
python基础系列教程——Python中的编码问题,中文乱码问题 如果不声明编码,则中文会报错,即使是注释也会报错. # -*- coding: UTF-8 -*- 或者 #coding=utf-8 ...
 - iOS 中json解析数据出现中文乱码的问题
		
一般服务器的编码格式都是UTF8,这样通过json解析下来的的数据,一般中文是不会出现乱码,但是如果服务器的编码格式不是UTF8,通过json解析的数据中的中文容易出现luan乱码,怎么解决这个问题呢 ...
 - 解决 Ubuntu 下 gedit编辑器打开文件出现中文乱码问题
		
解决 Ubuntu 中 gedit编辑器打开文件出现中文乱码问题 1. 问题分析 在 windows 系统下,.txt 文件默认编码方式为 gb18030 格式的中文编码,而 gedit 默认的编码方 ...
 - 解决在Linux下安装Oracle时的中文乱码问题
		
本帖最后由 TsengYia 于 2012-2-22 17:06 编辑 解决在Linux下安装Oracle时的中文乱码问题 操作系统:Red Hat Enterprise Linux 6.1数据库:O ...
 
随机推荐
- sentinel-dashboard安装、运行(docker)
			
https://github.com/alibaba/Sentinel/releases 下载源码 修改成支持nacos(略) mkdir /opt/sentinel-dashboard把编译好的se ...
 - Python 使用scapy 时报:ImportError: cannot import name 'NPCAP_PATH' 解决
			
解决办法:下载源码 https://github.com/secdev/scapy 下载完成后解压后里面有个scapy文件夹,把这个文件夹替换\Lib\site-packages\ 下的scapy 整 ...
 - jdk 6-13最有价值新特性总结
			
355: Text Blocks (Preview) JDK 13的特性.简化了大段文本的换行,例如sql或xml段. Shenandoah GC. jdk 12作为实验特性引入. JEP330-启动 ...
 - 解析生效测试方法 执行命令 ping 域名 得不到 IP 主要有如下几个原因:
			
https://help.aliyun.com/knowledge_detail/39834.html dig https://cloud.tencent.com/document/product/3 ...
 - 【C++】C++中的类模板
			
基础的类模板 模板类的继承 内部声明定义普通模板函数和友元模板函数 内部声明友元模板函数+外部定义友元模板函数 声明和定义分别在不同的文件(模板函数.模板友元) C++中有一个重要特性,那就是模板类型 ...
 - SQL存储实现将JSON自动转化成SQL数据列
			
CREATE PROCEDURE sp_GetJsonFields ( @Json VARCHAR(MAX) ) AS BEGIN SELECT @Json=REPLACE(@Json,'{','') ...
 - Chrome禁用software_reporter_tool
			
今天开机后,从几分钟到半个小时之间,感觉机器反应有些慢,发现CPU占用80-90%.查看任务管理器, 有一个 software_reporter_tool.exe 的程序占用了一半的CPU使用率. 转 ...
 - 【iCore4 双核心板_FPGA】实验二十:NIOS II之UART串口通信实验
			
实验指导书及源代码下载地址: 链接:https://pan.baidu.com/s/1g_tWYYJxh4EgiGvlfkVu1Q 提取码:dwwa 复制这段内容后打开百度网盘手机App,操作更方便哦 ...
 - [译]在Ubuntu 18.04上安装pip
			
三步走: 1.更新源 sudo apt update 2.安装pip sudo apt install python3-pip 3.查看pip版本 pip3 --version pip 9.0.1 f ...
 - Unity2018安装
			
1. 直接安装 2. 先安装Unity 2018.2.14f1 若有C:\ProgramData\Unity文件夹,删除这个文件夹下的所有文件 3. 解压 unity2018破解.zip 将最后一个 ...