request.setCharacterEncoding 乱码 与 response.setCharacterEncoding 乱码测试

本次测试还是参考网上的帖子,总结如下:


首先 明确一点: 字节流<------>字符流 的相互转换 ,例如:
 String s = "中文";
byte[] bs2 = s.getBytes("utf-8");
String s1 = new String(bs2,"iso-8859-1");
String s2 = new String(bs2,"utf-8");
String s3 = new String(s1.getBytes("iso-8859-1"),"utf-8");
System.out.println(s1+"\n"+s2+"\n"+s3);
输出结果:
??????
中文
中文


[b]以下适合POST 提交[/b]以上例子说明 两点:
1、字节流到字符流的 正向和反向 的编码格式要一致,才能正确转换,否则只会得到乱码。2、s1 由 不一致的 编码格式 iso-8859-1 转换成乱码后,可以再次还原为字节流,最后使用一致的编码格式得到正确的中文

好,明白这一点,第一我们首先看 request ,从浏览器到服务器的请求过程,form表单的提交信息需要 经过编码(什么编码??想一想,我们如何知道) 转为字节流,而后(这里讲tomcat)服务器会 逆向把字节流 通过默认编码iso-8859-1来还原为字符流,此时我们使用request.getParameter("XX")得到的东东是正确?还是乱码? 关键问题是:form表单提交时转换字节流时的 [b]编码格式(A)[/b] 和 tomcat 把字节流转回字符流的 [b]编码格式(B)[/b] 一致吗?
[b]编码格式(B)[/b]=“iso-8859-1”
[b]编码格式(A)[/b]我们从下面图中找:图示为简体中文(GB2312)
[img]http://dl.iteye.com/upload/picture/pic/60631/56e58bbd-0ae6-3415-be86-3dc03f4382bf.png[/img]

结果乱码。
简单的解决方法:
new String(request.getParameter("XX").getBytes("ISO-8859-1"),"GB2312")//每个参数都要这样做,代码重复

或者
request.setCharacterEncoding("GB2312");
request.getParameter("XX")//至少每个获取参数的地方需要写一次


OK! 问题是解决了,好点的办法:使用过滤器(如何实现?百度就可以)所有的请求都过滤。一次性了事。


待续...
参考作者:[url]http://hi.baidu.com/smiky/blog/item/7131d71b342688dfac6e756f.html[/url]
[url]http://china.manufacturer.com/article/study_for_character_encoding_java.htm[/url]
分享:[url]http://www.iteye.com/topic/640940[/url]
分享:[url]http://sailor90.iteye.com/blog/627514[/url]
MCP服务中JSON解析异常与中文乱码解决方案 JSON解析是微服务开发中的基础操作,但字符编码不一致常导致JsonParseException异常。本文深入解析UTF-8编码原理在HTTP请求、数据库交互等场景的技术价值,重点解决MCP服务中日期格式序列化、JSON结构不完整等典型问题。通过Spring Boot全局配置、Tomcat连接器调优等工程实践,提供从应用到数据库的全链路编码控制方案,并分享Redis序列化、WebSocket消息处理等进阶场景的实战经验,帮助开发者规避中文乱码陷阱。 阅读详情

相关推荐

TongWeb中文乱码全链路排查与编码配置实战指南

字符编码是计算机处理文本信息的基础,它定义了字符与二进制数据之间的映射关系。其核心原理在于为每个字符分配唯一的数字标识,确保数据在不同系统间传输时能正确解析。统一且正确的编码设置对保障软件系统的数据完整性与互操作性至关重要,尤其在Web应用、数据交换和国际化场景中。在实际工程实践中,中文乱码是常见且棘手的问题,常因请求/响应编码、数据库连接、文件读写等环节的编码声明不一致导致。本文聚焦于TongWeb应用服务器环境,深入剖析从浏览器请求到数据库存储的完整数据流转链路,系统讲解如何通过配置Connector的

weixin_30719711的博客 430

response 中文乱码的两个解决方法

response 中文乱码的两个解决方法

dajidali_chiji的博客 7270

Unity工业数据可视化:基于ModbusTCP的实时数据通信实战

本文详细介绍了在Unity中实现工业数据可视化的核心方法,重点讲解了基于ModbusTCP协议与PLC等工业设备进行实时数据通信的实战流程。内容涵盖NModbus库的集成、Modbus Slave模拟器的使用、TCP连接的建立与多线程安全通信、数据读写与解析,以及如何将实时数据驱动3D场景,为构建工业数字孪生与监控系统提供完整解决方案。

ol7890123的博客 554

Response响应的中文乱码问题

乱码呈现 乱码解释 乱码解决 初步解决 改进版 精华版 在这里介绍了Request请求参数中文乱码问题,下面我们介绍Response响应的中文乱码问题 乱码呈现 先来一个资源路径 IE浏览器访问 中文出现了乱码 乱码解释 因为Response对象时tomcat创建的,tomcat默认使用的是ISO-8859-1字符集,而IE浏览器默认使用的是GB2312字符集,也就是GBK字符集解码,2者的字符集不一样,所以会出现乱码 乱码解...

林高禄 2万+

LiveReload:释放你的F5,实时预览HTML效果

一、liveReload插件开发背景Web前端开发人员在写页面时,如果修改了HTML or CSS,要想看效果通常的做法就是保存代码就得 Alt+Tab,切换到浏览器(当然,我知道很多开发人员是双屏操作不一定需要切换到浏览器),但是一定要F5刷新才能看自己刚写的代码有没有效果,没有效果就再切换到编辑器下修改,然后再切换到浏览器F5刷新看效果,还没有效果,就再继续修改,如此反复。时间久了,前端自动化...

Char_n的博客 2509

解密高并发系统的瓶颈:五大解决方案

在互联网应用中,高并发是指在短时间内同时有大量的用户访问一个网站或服务,造成系统压力过大,导致服务器宕机或服务停止响应的情况。高并发是互联网应用面临的一个重要问题,需要采取一系列措施来解决。负载均衡、缓存、数据库优化、异步处理和分布式架构是解决高并发问题的主要方法。在实际应用中,需要根据具体情况选择不同的方法来解决高并发问题。在高并发情况下,使用负载均衡是解决问题的一种常见方法。负载均衡可以通过将请求分配到多个服务器上,从而减少单个服务器的负载。这可以通过硬件设备或软件实现。

BUG制造者:图图 <p>这是一个P标签</p> 3904

response乱码原因及setCharacterEncoding(“UTF-8“)和setContentType(“application/csv;charset=utf-8“)不生效的原因及解决方

基于以上两点原因,即使SecondServlet中response.setCharacterEncoding(“UTF-8”)语句执行之前没有执行了response.getWriter()语句,但是FirstServlet中执行了response.getWriter()语句,同样会使response.setCharacterEncoding(“UTF-8”)不生效。二、response.setCharacterEncoding(“UTF-8”)不生效的原因及解决方法。一、response乱码。

ikigai_6的博客 5061

手机相机Tuning专项调优(一):基础流程与图像主观评价标准建立实战解析

本篇为手机相机系统“Tuning专项调优”系列的开篇,深入剖析了当前手机相机Tuning的基本流程与图像主观评价标准的构建方法。结合实际工程经验与最新业界案例,详细介绍ISP调优和3A控制中涉及的主观评价标准,如锐度、色彩饱和度、噪声感知等,并提出一套可工程化落地的标准制定与评测实践体系,帮助工程师有效提升图像品质。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1933

response乱码 response.setCharacterEncoding("UTF-8")不生效的原因及解决方法

本文主要讲述response乱码原因及 response.setCharacterEncoding("UTF-8")不生效的原因及解决方法 一、response乱码 1、首先,response返回有两种,一种是字节流outputstream,一种是字符流printwrite。 申明:这里为了方便起见,所有输出都统一用UTF-8编码。 先说字节流,要输出“中国",给输

TLMS_的专栏 3万+

51单片机入门指南-基于STC89C52(持续更新)

一、环境介绍 编程IDE: keil5 单片机型号: STC89C51/52 开发板: 普中科技的开发板 完整PDF资源下载地址:https://download.csdn.net/download/xiaolong1126626497/19785856 二、51单片机开发手册介绍 2.1 前言 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。 该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最.

8798

MATLAB - 浮动基座机器人的逆运动学

本例演示如何解决以浮动底座为模型的机器人的逆运动学问题。浮动底座机器人可以在空间中自由平移和旋转,具有六个自由度。浮动基座机器人的逆运动学问题适用于空间应用,即使用安装在浮动和致动基座上的机械臂在空间操纵物体,也适用于躯干和腿部可在空间自由移动的行走机器人。请注意,刚体树对象表示具有固定基体的刚体树。这意味着刚体树的基体在世界中具有固定的位置和方向。您可以在基体上附加一个 “浮动 ”类型的刚体关节,为具有浮动基体的机器人建模,以用于动态模拟等某些应用。

机器人控制与仿真应用 2440

使用RESTful风格开发Java Web

什么是RESTful风格? REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移),REST 是一种体系结构,而 HTTP 是一种包含了 REST 架构属性的协议,为了便于理解,我们把它的首字母拆分成不同的几个部分: 表述性(REpresentational): REST 资源实际上可以用各种形式来进行表述,包括 XML、JSO...

anye0005的博客 376

大模型复杂问答能力评测框架:从原理到实践

在人工智能领域,大语言模型(LLM)的评估是衡量其实际应用价值的关键环节。其核心原理在于通过系统化的评测框架,对模型的理解、推理、整合与表达能力进行量化分析。传统的NLP基准测试往往侧重于事实性检索或简单推理,难以全面反映模型在应对多跳推理、隐含条件、长上下文整合等复杂现实任务时的真实性能。因此,专门针对复杂问答设计的评测技术应运而生,其价值在于为模型选型、效果优化和瓶颈诊断提供数据驱动的科学依据。该技术广泛应用于需要深度逻辑判断的业务场景,如智能投顾、法律咨询、医疗诊断等。本文聚焦的`tan92hl/Co

weixin_28679635的博客 362

pageEncoding,contentType,response/request.setCharacterEncoding

pageEncoding,contentType,request.setCharacterEncoding,response.setCharacterEncoding,初学javaWeb的时候总不太清楚它们之间的区别和联系,今天无事,总结一下吧。 request.setCharacterEncoding:设置服务器这端接收二进制数据时的编码格式 response.setCharacterEnc

大树的学习之路 557

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能。本篇文章主要介绍如何使用xlwings对Excel表格进行多行多列数据设置和操作,并给出相应的源代码。接着,我们可以对这个范围内的所有单元格进行操作,如设置字体颜色、填充颜色、对齐方式等。以上就是使用xlwings对Excel表格进行多行多列数据操作和设置字体颜色、填充色和对齐方式的全部内容。最后,我们可以将数据写入到单元格中,也可以从单元格中读取数据。在Excel中,可以通过。

BUG?不存在的! 713

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

response和request的setCharacterEncoding

response和request的setCharacterEncoding 一、request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值。 指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码。值得注意的是在执行setCharacterEncoding()之前,不能执行任

scl1991的专栏 672

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

request.getCharacterEncoding()返回null之java web乱码真相

今天在测试spring mvc是想知道原生的servlet的request和response的字符编码,于是写了两行代码测试一下。 System.out.println(request.getCharacterEncoding());//输出null System.out.println(response.getCharacterEncoding());//输出ISO-8859-1 这让我大惑不...

yrk0556的博客 4558

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Servlet中的response.getWriter().write()方法输出中文时,出现乱码的解决方法

在学习Servlet相关内容时,做了一个注册功能的小练习,结果在使用response.getWriter().write()输出时,因为带有中文字符,结果出现了乱码,初始代码如下: String username = request.getParameter("username"); String pwd = request.getParameter("pwd"); if(user....

yemuyouhan的博客 5437

解决为什么已经设置了request.setCharacterEncoding("utf-8");POST请求仍然乱码的问题

request.setCharacterEncoding("utf-8");应该在获取请求参数之前设置   在 http://bbs.csdn.net/topics/380124606 和 http://bbs.csdn.net/topics/370125113 找到的答案 由于POST传来数据,Tomcat默认以ISO-8859-1编码成单字节数据,若没有进行请求编码设置或重新编码...

weixin_30648587的博客 940

Servlet设置请求乱码和响应乱码(过滤器)

** 请求乱码** 就是浏览器输入的数据提交给服务器后,服务器端接收到后乱码。 解决:request.setCharacterEncoding(“utf-8”); 注意:一定要在调用request.getParameter()之前加上。不能在其之后。 响应乱码 服务器端将数据响应给浏览器后,浏览器看到乱码。 解决:response.setContentType(“text/html;charse...

jefferyfg的博客 575

jsp乱码问题

(一)说一下我遇到的情况:每次只要修改某个jsp页面后,就会导致浏览器显示乱码。前后修改了eclipse相关配置信息。然而并没有什么暖用: [img]http://dl2.iteye.com/upload/attachment/0120/0327/e6c714a8-dbd5-340e-a99c-fa484858fe80.jpg[/img] (二)最后想到,应该是jsp编译成servle...

u013174523的专栏 154

TongWeb中文乱码全解析:从编码原理到实战解决方案

字符编码是Web开发中的基础概念,它定义了计算机如何存储和传输文本数据。其核心原理在于将字符映射为二进制字节序列,并在不同系统间保持一致性。UTF-8作为通用编码方案,因其兼容性和广泛支持,成为解决跨平台、跨语言字符显示问题的关键技术价值所在。在Java Web应用场景中,请求/响应流程的编码一致性至关重要,特别是在处理表单提交、数据持久化时。本文聚焦于TongWeb应用服务器,针对其部署后出现的**中文乱码**问题,深入剖析请求数据解码机制,并提供从过滤器配置到服务器调优的完整**解决方案**,帮助开发者

weixin_34007906的博客 320

jsp乱码解决方案

1.<%@pagepageEncoding="UTF-8" %>作用:* 告诉JSP编译器在将JSP文件编译成Servlet时使用的编码。通常,在JSP内部定义的字符串(直接在JSP中定义,而不是从浏览器提交的数据)出现乱码时,很多都是由于该参数设置错误引起的。例如,你的JSP文件是以GBK为编码保存的 (右击jsp-->Properties --> ...

weixin_34344677的博客 78

Tomcat乱码问题全面解析与解决方案

字符编码是Web开发中的基础概念,其本质是字节与字符的映射规则。当HTTP请求在浏览器、服务器、数据库等组件间传递时,若各环节编码体系不一致(如UTF-8与GBK混用),就会产生乱码问题。Tomcat作为Java Web核心容器,其默认ISO-8859-1编码与主流UTF-8标准的不匹配是常见乱码根源。通过配置Connector的URIEncoding参数、统一项目文件编码、设置响应头字符集等技术手段,可构建端到端的编码解决方案。本文以实际案例演示如何排查GET/POST请求乱码、文件上传编码异常等典型场景

weixin_34014555的博客 386

JSP编码以及乱码解决总结

首先,说说JSP/Servlet中的几个编码的作用: 1.<%@pagepageEncoding=”UTF-8” %>作用: * 告诉JSP编译器在将JSP文件编译成Servlet时使用的编码。通常,在JSP内部定义的字符串(直接在JSP中定义,而不是从浏览器提交的数据)出现乱码时,很多都是由于该参数设置错误引起的。 例如,你的JSP文件是以GBK为编码保存的 (右击jsp–>Properti

请叫我林小李的博客 719

Tomcat乱码问题全解析与解决方案

字符编码是计算机科学中的基础概念,指将字符转换为字节序列的规则。当编码与解码使用的字符集不一致时,就会出现乱码问题,这在Web开发中尤为常见。Tomcat作为Java Web应用的核心容器,其请求响应流程涉及URI编码、表单解析、内容输出等多个环节,每个环节都可能因字符集配置不当导致乱码。理解字符编码原理,掌握Tomcat的编码配置方法,能有效解决支付系统、电商平台等场景下的乱码问题。本文通过金融行业真实案例,详解从Connector配置到微服务调用的全链路编码控制方案,特别针对URIEncoding、PO

weixin_30938149的博客 485
上一篇: struts2的线程安全
下一篇: GBK GB2312 utf-8 编码测试
effective_java
博客等级 码龄17年 2粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值