ajax后台返回数据中文乱码_透彻分析和解决一切javaWeb项目乱码问题

2023-10-28

前言

乱码是我们在程序开发中经常碰到且让人头疼的一件事,尤其是我们在做javaweb开发,如果我们没有清楚乱码产生的原理,碰到乱码问题了就容易摸不着头脑,无从下手。

乱码主要出现在两部分,如下:

第一,浏览器通过表单提交到后台,如果表单内容有中文,那么后台收到的数据可能会出现乱码。

第二,后端服务器需要返回给浏览器数据,如果数据中带有中文,那么浏览器上可能会显示乱码。

接下来我们逐一分析乱码产生的原因,以及如何解决乱码问题。

一、后端收到浏览器提交的中文乱码

这里又分为get请求和post请求。

get请求

get请求,请求参数中带有中文,后台接收会出现乱码,原因是tomcat默认编码是“ISO-8859-1”,所以tomcat会使用“ISO-8859-1”对中文进行编码,该编码不支持中文,所以后台接收到就乱码了。解决方式有两种。

  1. param = new String(param.getBytes("ISO-8859-1"),"utf-8");
  2. 修改tomcat编码为"utf-8",不建议使用这种方式。
post请求

post请求,出现乱码的原因同get请求,解决方式比较简单,如下:

request.setCharacterEncoding("utf-8");

设置请求参数的编码格式为“utf-8”,这样就不会有问题了。

二、后端返回中文给浏览器发生乱码

后端返回数据给浏览器,一般也有两种形式,一种是response.getOutputStream(),一种是response.getWriter()。

两者区别以及使用规则
  • getOutputStream()就是得到了OutputStream,用来向客户端(浏览器)输出任何数据,如果输出的是字符,会被转换成二进制输出,如果字符中出现中文,那么会出现“java.io.CharConversionException:Not an ISO 8859-1 character:”异常
  • getWriter()是对outputStream进行了包装,用来输出字符用的。

因此,调用requonse.getWriter()方法时可实现文本字符串数据输出,调用response.getOutputStream()方法可现实字节流数据的输出。所以,如果要输出图片等二进制数据时,需要使用response.getO

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ajax后台返回数据中文乱码_透彻分析和解决一切javaWeb项目乱码问题 的相关文章

  • 使用base64编码的好处

    在项目中 将报文进行压缩 加密后 最后一步必然是使用base64编码 因为base64编码的字符串 更适合不同平台 不同语言的传输 它不受其他编码的影响 仍然保持不变 这点很有意义 如下验证 String a 123412312sfwefw
  • Vue使用AWS s3进行大文件的分片上传、断点续传、下载(将文件上传进度显示)

    这篇博客已经将这些aws S3的Api集成为了一个js文件 直接引用就可以了 就不需要这么复杂 将AWS S3大文件文件上传相关的API集成为js文件 功能包括 多文件并行上传 文件分片上传 断点续传 文件分片合成 上传暂停 取消上传 文件
  • 浅浅记录一下初次跑大模型的过程

    之前主要搞搞ros小车方面的东西 由于本科是学机械方面的 对于深度学习 大模型一类的东西完全没有概念 但是由于需要 接触计算机视觉方面内容 过程很艰辛 即便是有很专业的女朋友帮助 初次跑完浅浅记录一下 希望对没接触过相关领域的同学们有一定的
  • vue 跳转页面并且传值以及在新窗口打开页面的方法

    vue 跳转页面并且传值以及在新窗口打开页面的方法 第一步 vue跳转页面的时候要是不带自动生成路径的话 是需要自己配置页面的路由的 在这里进行配置就可以 里面会有案例自己跟着配置就好 第二步 配置完成后就可以进行跳转了 代码如下 跳转页面
  • 读读文档吧 - SQLAlchemy 2.0

    ORM Mapped Class Overview https docs sqlalchemy org en 20 orm mapping styles html The original mapping API is commonly r
  • Python+Flask(2)--通过flask paginate解决列表分页问题

    先看最终实现效果 实现主要步骤及重要代码如下 1 列表需要用到的数据源及内容自己随便建立 我这边用新闻资讯数据测试 CREATE TABLE article aid int 11 NOT NULL AUTO INCREMENT cat id
  • 【第一章】专栏介绍

    版本 修改时间 初稿 2023 03 26 补充 考研和就业的选择 2023 04 04 自我介绍 你好 我曾经是一名普通一本学生 专业是电子信息工程专业 从大二就开始独自一人自学后端开发 大三后面三年大部分时间都在图书馆或者实验室学习 在
  • 如何上传大文件(4GB)到虚拟机

    使用xhell上传大文件会报文件过大的异常 解决方案 可以使用 Everything 工具 实现快速便捷传送大文件到虚拟机 1 百度搜索Everything 进入官网下载 这个程序体量非常小 可以放心下载 2 下载完成后打开 点击工具一栏
  • linux下MySql服务器的安装(yum安装OK)

    root test219 mysql mysql V mysql Ver 14 14 Distrib 5 5 11 for Linux x86 64 using readline 5 1 mysql5 5在linux服务器上的安装 mysq
  • 2021.11.12总结

    把入门3循环结构的题大致写完了
  • 树莓派4B之Windows XP系统安装游戏(一)

    上一篇博文 树莓派4B安装windows xp windows 95 windows xp windows 95 for raspberry pi 4B 下一篇博文 树莓派4B之Windows XP系统安装游戏 二 目录 一 模拟器 游戏下
  • AI新手必看:如何区分参数和超参数

    相信所有人刚开始应用机器学习时 都会被两个术语混淆 计算机学科里有太多的术语 而且许多术语的使用并不一致 哪怕是相同的术语 不同学科的人理解一定有所不同 比如说 模型参数 model parameter 和 模型超参数 model Hype
  • 华为nova6se怎么升级鸿蒙,华为EMUI11支持哪些手机

    华为EMUI11适配机型有什么 首批支持EMUI11 更新的机型有 P40 系列 Mate30 系列 MatePad Pro系列等 10 款机型 先了解更多EMUI11适配机型相关内容的小伙伴下面和小编一起来看看吧 华为EMUI11适配机型
  • VC++ 图像颜色调节

    1 BMP图片在GDI方式下贴图 32位位图 半透明像素会显示黑色或白底 像素处理代码 void CrossImage CImage img if img IsNull return 确认该图像包含Alpha通道 if img GetBPP
  • JAVA的图形用户界面布局GUI入门(上)

    java的GUI企业里面用的比较少 现在主流的UI都使用HTML5 开发 Java提供了三个主要包 做GUI开发 java awt 包 主要提供字体 布局管理器 javax swing 包 商业开发常用 主要提供各种组件 窗口 按钮 文本框
  • 神经网络学习之一——M-P模型

    神经网络学习之一 M P模型 M P模型是什么 M P模型是于1943年美国神经生理学家沃伦 麦卡洛克 Warren McCuloch 和数学家沃尔特 皮茨 Walter Pitts 提出 是首个通过模仿神经元而形成的模型 结构图如下所示
  • 主机地址变更后,dubbo请求时依旧会寻址旧IP的问题

    机房迁移 导致测试服务器IP变更 比原于IP为192 168 1 105变更为10 1 9 120 服务源码未做任何变更 启动服务时依旧是旧地址请求 此问题由dubbo本地注册中心的缓存所致 清理掉即可 位置一般在于 用户目录 dubbo目
  • Redis(一)常见命令使用

    常见文件名 Redis cli使用命令 1 启动Redis 2 连接Redis 3 停止Redis 4 发送命令 1 redis cli带参数运行 如 2 redis cli不带参数运行 如 5 测试连通性 key操作命令 获取所有键 查询
  • PostgreSQL系列3:PostgreSQL导入导出SQL

    启动数据库 pg ctl D data db pgsql data l data db pgsql logs pgsql log start 关闭数据库 pg ctl D data db pgsql data stop 使用pgsql客户端

随机推荐

  • R语言实战学习--回归

    文章目录 普通最小二乘回归 OLS 简单线性回归 多项式回归 多元线性回归 回归诊断 标准方法 QQ图正态性检验 残差图 误差的独立性 成分残差图 偏残差图 线性 同方差性 线性模型假设综合验证 异常观测值 高杠杆值 强影响点 变量添加图
  • 爬虫基础————ip地址和url详解

    学习慕课网bobby老师的课程从零起步 系统入门Python爬虫工程师时做的笔记 有兴趣的同学可以去慕课网观看视频 1 ip地址 整个网络传输可以比作快递 数据就是快递包裹 会经过一系列中转站 分包捡包等操作 最后才送到客户手中 Ip地址就
  • Python程序:输出杨辉三角的几种办法

    文章目录 一 问题描述 二 问题分析 三 第一种方法 1 具体代码 2 运行结果 3 程序的改进 四 第二种方法 1 具体代码 2 运行结果 五 总结分析 一 问题描述 给定一个非负整数 n 生成 杨辉三角 的前 n行 在 杨辉三角 中 每
  • 【文献调研】多任务学习-Part1

    基于数据增强和多任务学习的突发公共卫生时间谣言识别研究 摘要 Motivation 通过引入多任务学习模型和数据增强方法 解决突发公共卫生事件情景下谣言识别任务数据不平衡且带标签数据量少的问题 Methods 首先提取突发公共卫生事件谣言文
  • 《Learning Spark》第八章:调优及调试spark应用

    2020 07 05 引言 我记得当时我就是因为使用hadoop太过费劲了 才上手的spark 然后因为自己的机器性能不行 又一点一点调优 当时调优的过程 主要是从底层的结构上来进行调优 主要就是那些worker数量以及内存大小等等 但是对
  • PyTorch和TensorFlow生成对抗网络学习MNIST数据集

    介绍 生成对抗网络 简称GAN 是最近开发的最受欢迎的机器学习算法之一 对于人工智能 AI 领域的新手 我们可以简单地将机器学习 ML 描述为AI的子领域 它使用数据来 教 机器 程序如何执行新任务 一个简单的例子就是使用一个人的脸部图像作
  • png四通道透明背景图成功加入到视频帧中 使用了mask原理

    import cv2 import ffmpeg import cv2 import numpy as np import glob video f D CCTV CCTV mp4 视频文件名 output f D CCTV logoaft
  • 共享内存---结构体使用

    共享内存主要是通过映射机制实现的 Windows 下进程的地址空间在逻辑上是相互隔离的 但在物理上却是重叠的 所谓的重叠是指同一块内存区域可能被多个进程同时使用 当调用 CreateFileMapping 创建命名的内存映射文件对象时 Wi
  • 网络基础-应用层:E-mail应用:SMTP协议,POP协议,IMAP协议

    Email应用的构成 邮件客户端 邮件服务器 SMTP协议 只支持文本 邮件服务器 邮箱 存储发给该用户的Email 消息队列 存储等待发送的Email SMTP协议 邮件服务器之间传递消息所使用的协议 客户端 发送消息的服务器 服务器 接
  • js实用方法记录-js动态加载css、js脚本文件

    js实用方法记录 动态加载css js 附送一个加载iframe h5打开app代码 1 动态加载js文件到head标签并执行回调 方法调用 dynamicLoadJs http www yimo link static js main m
  • 双向链表实现简单的增删查改

    前言 上次分享了单向链表的增删查改 这次要介绍双向链表的增删查改 其实双向链表也有多种 这次主要介绍结构最复杂但是实现起功能反而最简单的带头双向循环链表 希望我的分享对各位有些许帮助 学习这篇文章的内容最好有这篇文章的基础 目录 一 双向链
  • VBA常用语法(一)

    VBA语句 一 VBA语句 1 宏程序语句 运行后可 以完成一个功能 给单元格a1赋值 Sub test 开始语句 Range a1 10 程序主体 End Sub 结束语句 2 函数程序语句 运行后可以返回一个值 Function shc
  • 阿里云数据库 MongoDB 版Python 连接示例

    安装pymongo import uuid from pymongo import MongoClient 两地址 CONN ADDR1 demotest 1 mongodb tbc3 newtest rdstest aliyun inc
  • 即将开班「中国图象图形学学会」前沿讲习班第2期——智能驾驶与机器视觉

    CSIG图像图形学科前沿讲习班第2期 主题 智能驾驶与机器视觉 2017年7月15日 17日 清华大学 智能驾驶无疑开启了交通运输行业的新时代 随着传感器和人工智能技术的逐渐成熟 智能驾驶已经从 概念化 进入 落地实用化 的关键窗口期 越来
  • 高精度地图定位在高速公路自动驾驶系统中的应用

    摘要 自动驾驶已经成为全球汽车产业的战略发展方向 其中L3 级高速公路自动驾驶是最有可能率先落地的自动驾驶系统 高精度地图和定位系统是自动驾驶系统的关键一部分 近年来发展迅速 已经达到可量产状态 文章首先分析了自动驾驶和高精度地图定位的发展
  • 运动目标检测代码(帧差、高斯混合、vibe代码实现)

    主要介绍四种运动目标检测的算法代码 每段代码博主实测可运行 当前主流的混合高斯背景模型 VIBE算法代码转载自他处 另外GMG算法 KNN算法在朱伟的书中也有讲 opencv3 0中 有专门的背景模型类BackgroundSubtracto
  • Java学习笔记29——字节流2

    字节流读数据 字节流读数据 一次读一个字节的数据 一次读一个字节数组的数据 字节流复制图片 字节流读数据 一次读一个字节的数据 FileInputStream 从文件系统中的文件获取输入字节 public class FileInputSt
  • 数据结构-第1章 概述

    第1章 概述 第2章 线性表 第3章 栈和队列 第4章 串 矩阵和广义表 第5章 树和二叉树 第6章 图 第7章 查找 第8章 排序 一 第1章 概述 1 数据 所有能被计算机识别 存储和处理的符号的集合 包括数字 字符 声音 图像等信息
  • 如何强制性管控代码质量

    一 背景 在之前的文章中 我们已经描述了jenkins和sonarqube是如何集成起来的 今天我们在该篇文章中描述下 如何使用gerrit jenkins sonar进行代码质量管控 主要是利用sonarqube分析代码的能力来管控 一般
  • ajax后台返回数据中文乱码_透彻分析和解决一切javaWeb项目乱码问题

    前言 乱码是我们在程序开发中经常碰到且让人头疼的一件事 尤其是我们在做javaweb开发 如果我们没有清楚乱码产生的原理 碰到乱码问题了就容易摸不着头脑 无从下手 乱码主要出现在两部分 如下 第一 浏览器通过表单提交到后台 如果表单内容有中