解决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 ...
随机推荐
- PPT宝典
http://www.ppt115.com/ 是一个 ppt 网站资源导航,专注分享有关 ppt 相关的网站.教程.使用方法等.
- MQTT研究之EMQ:【EMQX使用中的一些问题记录(1)】
issue 1. EMQX的共享订阅 EMQX是一个非常强大的物联网通信消息总线,基于EMQX开展应用开发,要注意很多配置细节问题,这里要说到的就是共享订阅以及和cleanSession之间的关系问题 ...
- Linux如何将未分配的硬盘挂载出来
情景说明 客户给了几台服务器,说500G硬盘,但到手操作的时候,使用命令查看,发现只有不到200的硬盘 [root@localhost ~]# df -h Filesystem Size Used A ...
- 查看apache httpd server中加载了哪些模块
说明: 有的时候,需要查看当前apache中都加载了哪些模块,通过以下命令进行查看 [root@hadoop1 httpd-]# bin/apachectl -t -D DUMP_MODULES Lo ...
- java多线程(三)线程的安全问题
1.1. 什么是线程安全 如果有多个线程同时运行同一个实现了Runnable接口的类,程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的:反之,则是线程不 ...
- elementUI vue this.$confirm 和el-dialog 弹出框 移动
调试了好久, 还能凑合用, 请直接看DOME 示例,复制就能用: <!DOCTYPE html> <html lang="zh"> <head> ...
- Synchronize深入
前言: synchronize会使用,但是对于深层次的知识,不是很清楚,故整理一篇博客. 简介: 能够保证在同一时刻,最多只有一个线程执行该端代码,以达到保证并发安全效果. 两种用法: 对象 ...
- 解决ImportError: No module named utils
转载:https://blog.csdn.net/weixin_43979572/article/details/86159265 在Python中遇到了导包错误,其实包已经有了.原因是我再B文件的a ...
- 【linux基础】如何配置ubuntu系统为静态IP地址
前言 连接远程server重启的时候发现IP发生变化,影响远程连接,此时,需要将server配置为静态IP. 系统环境 ubuntu16.04 操作过程 1. 设置IP和DNS command sud ...
- 【NPDP笔记】第五章 工具与度量
5.1 创意工具 Ideation 创意开发 创意工具 Scamper Substitute Combine Adapter Modify Put to another use Eliminate ...