Request请求参数----中文乱码问题

一: GET  POST获取请求参数:

        在处理为什么会出现中文乱码的情况之前, 首先我们要直到GET  以及 POST两种获取请求参数的不同

        1>POST

        POST获取请求参数是通过输入流getReader来进行获取的, 通过字符输入流来获取响应的请求参数, 并且在解码的时候, 默认的情况是      ISO_8859_1   的解码方式

        2>GET

        GET获取请求参数的方式是通过getQueryString赖进行获取的, 并没有使用POST的流派方式

二: 乱码原因:

        1>编码上:

        浏览器在对请求参数进行编码的时候使用的是自定的UTF-8的形式, 首先对于中文字符, 比如张三进行编码, 在UTF-8下, 一个汉字占用了三个字节, 所以在这里就是6个字节

        转化方式通过以下两步进行实现

        1.首先将字符串转化为二进制的方式

        2.之后在每两个16进制数之前加上%即可

        2>解码上:

        Tomcat默认使用的都是   ISO_8859_1  的解码方式

因为编码跟解码的方式不一样, 因此造成了在输入中文的时候出现乱码的情况

三: 解决方案

        1>POST中文乱码解决方法:

        因为POST在接收参数使用的是Reader的方式, 并且此输入流的编码方式是可以进行相应的修改的, 所以我们在这边直接进行修改即可

//解决在接受参数的时候出现中文乱码的情况//1.重新设置post方式房中的Reader编码req.setCharacterEncoding("UTF-8");//2.获取数据String username = req.getParameter("username");System.out.println("修改之前"+username);//å¼ ä¸  接收之后发现出现了乱码的情况//其实是因为在Post方式当中的getReader中,使用的字符获取的编码并不是UTF-8的形式,所以我们需要对其进行修改//但是无法解决get的请求参数方法的乱码

                2>GET中文乱码解决方法:

        在前面我们已经分析过了GET跟POST获取请求参数的方式是不一样的, 而且GET解码在Tomcat当中是固定的, 无法进行修改, 所以我们不能通过使用POST的修改方式来解决GET中文乱码的方式

        但在分析过乱码出错的原因之后, 我们发现, 对于Tomcat已经给我们的 "乱码"  实际上 ,我们只要

                1.先将乱码进行编译转化, 改为字节数组

                2.再对于字节数组进行解码, 将其转化为字符即可

 //3.GET乱码无法使用这种设置其编码的原因, 因为GET在进行编码的时候使用的并不是Reader这种编码的方式, 同时的其系统内部设定其编码无法进行修改, 我们也就无法通过使用这种重新设置编码形式的方式了/*分析: 中文乱码的原因就是浏览器的编码, 跟Servlet的解码不一样, 我们可以对乱码之后的数据再将其转换成为一个字节,之后将其转化成为字符即可*///先将其转换成为一个字节的类型,之后再将字节转化成为字符即可byte[] bytes = username.getBytes(StandardCharsets.ISO_8859_1);String s = new String(bytes, "UTF-8");System.out.println("更改过后:"+s);

         同样的, 这种不使用更改流派的默认编码, 而是对于乱码的修改的方式, 也适用于对于POST乱发情况的解决, 这也是一种通用的解决方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/766891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

由浅到深认识Java语言(21):Math类

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

GaussDB WDR分析之集群报告篇

AWR报告目前已经成为Oracle DBA分析问题,定位故障最为重要的报告,阅读与分析AWR报告的技能也是Oracle DBA必备的技能。国产数据库为了提高运维便捷性,都在做类似Oracle AWR报告的模仿,只不过由于指标体系不够完善,因此…

postman 用上一个请求的响应体中的字段设置下一个请求的请求参数

文章目录 IntroPostman usagePre-request ScriptTests javascripts API Intro 这一切都是为了增加自动化动作所占的比例(减少人手工操作复制粘贴可能会造成的错误)。 Postman usage 最常用的:选HTTP方法类型、写URL,在Headers中…

无锁队列(Lock-Free Queue)

一、什么是无锁队列 无锁队列(Lock-Free Queue)是一种不使用锁机制(如互斥锁或读写锁)来实现线程安全的数据结构,是lock-free中最基本的数据结构。它通过复杂的原子操作(如CAS操作,在C中&#x…

MySQL数据库(基础篇一)

一、数据库基本知识 1.1 基础知识: 数据库的作用: 用于存储网页中接收到的数据 数据库: 就是用来存储数据的那个文件 常见的数据库管理软件:MySQL、Oracle、SqlServer、DB2...,通过使用数据库管理软件可以更高效的管理…

如何解决Layui后台接口返回数据,但是table.render不渲染表格数据的问题

我这边进行了pareData数据格式转换,response重新定义了layui的参数格式规范 接口正常返回了数据 但是就是不渲染,我这个郁闷啊!! 忽然,我把后台重新定义的layui规定的格式参数,有个参数名叫data&#xff0…

sql注入五-WEB攻防-注入工具SQLMAPTamper编写指纹修改高权限操作目录架构

演示案例: 数据猜解-库表列数据&字典权限操作-文件&命令&交互式提交方法-POST&HEAD&JSON绕过模块-Tamper脚本-使用&开发分析拓展-代理&调试&指纹&风险&等级 #参考: https://www.cnblogs.com/bmjoker/p/9326258.…

自动化的免下车服务——银行、餐厅、快餐店、杂货店

如果您在20世纪70年代和2020年分别驾车经过免下车服务餐厅(汽车穿梭餐厅),您会发现,唯一的不同是排队的车型。50多年来,免下车技术一直为我们提供着良好的服务,但现在也该对它进行现代化改造了。 乘着AI和自…

【Spring Boot 3】【YAML】读取YAML文件

【Spring Boot 3】【YAML】读取YAML文件 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花…

LeetCode 2657.找到两个数组的前缀公共数组

给你两个下标从 0 开始长度为 n 的整数排列 A 和 B 。 A 和 B 的 前缀公共数组 定义为数组 C ,其中 C[i] 是数组 A 和 B 到下标为 i 之前公共元素的数目。 请你返回 A 和 B 的 前缀公共数组 。 如果一个长度为 n 的数组包含 1 到 n 的元素恰好一次,我…

FPGA与以太网相关接口知识

一:一般硬件架构;(对于1000m网一般都使用普通io口,普通管脚能跑800M(正点技术说的))) 1:FPGA普通管脚——phy芯片(pcspma)——rg45 2:FPGA(GT)光口(利用fpga的GT,直接节约了phy芯片…

先进电机技术 —— 长线缆驱动电机面临哪些问题?

一、长线驱动问题简述 电机变频驱动器(VFD)输出侧采用长线缆驱动电机运行时,将会面对多种问题,主要包括但不限于: 此图片来源于网络 1. **电压降**: - 长线缆的电阻会导致电压降增大,当电…

53 initrd/initramfs 相关

前言 呵呵 这里主要是 探究一下 根文件系统 相关的东西 以及 附加了一些 系统启动的相关信息 计算机启动 硬件重置寄存器 设置初始化数据 计算机访问 0xffff0, 执行 bios 的代码, bios 选择启动设备, 然后执行 启动设备 boolloader 的代码 bootloader 将 boot.img 加载…

你可敢信这是 AI 写的歌?suno 真的惊到我了!

你可敢信这是 AI 写的歌?suno 真的惊到我了! AI 音乐平台 suno 横空出世,效果惊人,我赶紧试了一下,amazing!!! suno创作 - 背叛 这是我随意创作的,这几天对诅咒前男友那首…

MySQL常用函数整理,建议收藏!

常见函数 字符串函数数字函数日期函数聚合函数流程控制函数 一、字符串函数 concat(s1,s2...,sn) --将s1,s2...,sn连接成字符串,如果该函数中的任何参数为 null,返回结果为 null concat_ws(sep,s1,s2...,sn) --将s1,s2...,sn连接成字符串,并用sep字符…

数据分析-Pandas分类数据的类别排序和顺序

数据分析-Pandas类别的排序和顺序 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&…

【暴刷力扣】15. 三数之和

15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三…

xilinx的高速接口构成原理和连接结构

本文来源: V3学院 尤老师的培训班笔记【高速收发器】xilinx高速收发器学习记录Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟GT Transceiver的总体架构梳理 文章目录 一、概述:二、高速收发器结构:2.1 QUAD2.1.1 时钟2.1.2 CHANNEL…

【阅读论文】When Large Language Models Meet Vector Databases: A Survey

摘要 本调查探讨了大型语言模型(LLM)和向量数据库(VecDB)之间的协同潜力,这是一个新兴但迅速发展的研究领域。随着LLM的广泛应用,出现了许多挑战,包括产生虚构内容、知识过时、商业应用成本高昂…

【Godot4.2】基础知识 - Godot中的2D向量

概述 在Godot中,乃至一切游戏编程中,你应该都躲不开向量。这是每一个初学者都应该知道和掌握的内容,否则你将很难理解和实现某些其实原理非常简单的东西。 估计很多刚入坑Godot的小伙伴和我一样,不一定是计算机专业或编程相关专…