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.rhkb.cn/news/285187.html

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

相关文章

基于SpringBoot+Vue+Mybatis的408刷题小程序管理端

简介 原始数据:书目信息、章节信息、题目信息、系统菜单、系统角色、系统用户。 主要任务:系统主要采用spring boot作为后端框架,前端使用vueelementUI,为408刷题小程序提供一个方面的管理和维护的任务,主要功能包括…

图解Kafka架构学习笔记(三)

准备Kafka环境 这里推荐使用Docker Compose快速搭建一套本地开发环境。 以下docker-compose.yml文件用来搭建一套单节点zookeeper和单节点kafka环境,并且在8080端口提供kafka-ui管理界面。 version: 2.1services:zoo1:image: confluentinc/cp-zookeeper:7.3.2hos…

day6:STM32MP157——串口通信实验

使用的是cortex A7内核 【串口通信的工作原理】 本次实验使用的是uart4的串口,分别使用了uart4_tx和uart4_rx两个引脚。根据板子的原理图我们可以知道,他们分别对应着芯片的PG11和PB2 从引脚名字也可以知道使用了GPIO口,所以本次实验同样需…

ubuntu20.04安装 ffmpeg 开发环境

参考:参考1 一些相关软件包,已打包整理好,如下 源码包 1、安装步骤 创建安装目录 sudo mkdir -p /usr/local/ffmpeg/lib 解压源码 tar -jxf ffmpeg-4.3.2.tar.bz2 到指定ffmpeg目录进行配置 cd ffmpeg-4.3.2/ 配置:会报错很多…

Spark Streaming DStream

Spark Streaming DStream DStream 即Discretized Stream,中文叫做离散流,Spark Streaming提供的一种高级抽象,代表了一个持续不断的数据流。 DStream可以通过输入数据源来创建,比如Kafka、Flume,也可以通过对其他DS…

【JAVA】通过JAVA实现用户界面的登录

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-wyCvaz0EBNwHcwsi {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

2025汤家凤考研数学视频,基础网课百度网盘课程+PDF讲义资料

2025汤家凤大神及数学全程 docs.qq.com/doc/DTmtOa0Fzc0V3WElI 复制粘贴到浏览器,可以见所有的Ke 第一轮 夯实基础 1.阅读大纲考查要求,明确每章的学习目标; 2.按节学习数学理论基础知识,吃透书中例题; 3.学习每章…

数学建模综合评价模型与决策方法

评价方法主要分为两类,其主要区别在确定权重的方法上 一类是主观赋权法,多次采取综合资讯评分确定权重,如综合指数法,模糊综合评判法,层次评判法,功效系数法等 另一类是客观赋权法,根据各指标…

ubuntu上一款好用的串口工具screen

看名字,你猜他是什么? 安装 sudo apt install screen 然后将USB串口接到虚拟机,执行dmesg命令查看串口设备名: 测试: sudo screen /dev/ttyUSB0 115200确实很简单。

机器视觉学习(六)—— 图像的颜色识别

目录 一、色彩空间 1.1 RGB色彩空间 1.2 HSV色彩空间 1.3 灰度 1.4 CMYK色彩空间 1.5 Lab色彩空间 二、色彩空间转换 三、识别颜色 3.1 识别一种特定的颜色 3.2 识别多种颜色 一、色彩空间 计算机视觉中常用的色彩空间有RGB色彩空间、HSV色彩空间、CMYK色彩空间、La…

如何设计循环队列(两种方法)

文章目录 前言一、方法一:数组法二、方法二.链表法总结 前言 前面有提到过队列的知识,这次来说一下怎么设计一个循环队列 一.循环队列(力扣) . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资…

Java Synchronized

Synchronized Synchronized 原理偏向锁轻量级锁重量级锁 Synchronized特征jdk1.8Synchronized优化了什么?Synchronized修饰范围Synchronized lock 区别 Synchronized 原理 在Java对象内存布局中,每个对象都有一个对象头,其中包含锁状态信息。…

【stable diffusion扩散模型】一篇文章讲透

目录 一、引言 二、Stable Diffusion的基本原理 1 扩散模型 2 Stable Diffusion模型架构 3 训练过程与算法细节 三、Stable Diffusion的应用领域 1 图像生成与艺术创作 2 图像补全与修复 3 其他领域 四、Stable Diffusion的优势与挑战 👉优势 &#x1f…

SpringBoot3集成PostgreSQL

标签:PostgreSQL.Druid.Mybatis.Plus; 一、简介 PostgreSQL是一个功能强大的开源数据库系统,具有可靠性、稳定性、数据一致性等特点,且可以运行在所有主流操作系统上,包括Linux、Unix、Windows等。 通过官方文档可以…

抠门精出游记之吉隆坡篇

我在新加坡一直是个街溜子,每天就是到处溜达,当然,时髦的词叫做citywalk。anyway,叫啥不重要,新加坡走腻了,跟老婆申请,去吉隆坡溜达一下,为啥要来吉隆坡呢,说起来还是因…

day3-QT

1>使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函。将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是…

【循环神经网络rnn】一篇文章讲透

目录 引言 二、RNN的基本原理 代码事例 三、RNN的优化方法 1 长短期记忆网络(LSTM) 2 门控循环单元(GRU) 四、更多优化方法 1 选择合适的RNN结构 2 使用并行化技术 3 优化超参数 4 使用梯度裁剪 5 使用混合精度训练 …

科技云报道:造完“大模型”,“具身智能”将引领AI下一个浪潮?

科技云报道原创。 资深机器人专家Eric Jang不久前曾预言:“ChatGPT 曾在一夜之间出现。我认为,有智慧的机器人技术也将如此。” 3月13日深夜,一段人形机器人的视频开始热传。 在视频中,Figure的人形机器人,可以完全…

研华工控机610L学习笔记2:visualstudio与第一个C#程序

今日继续学习工控机 C# 编程相关知识: 这篇结束后我将先进行一段时间的C#的学习研究,并写一些C#的笔记 后续再更新工控机编程设计相关 目录 1、安装visualstudio: 2、创建第一个C#程序: 3、寻找C#解决方案源文件: …

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

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