今天在测试一GET接口时,在浏览器输入拼接的中文参数后台乱码了,我的页面所有格式均设成UTF-8
格式,在后台过滤器中用request.setCharacterEncoding("utf-8")方法将request的字符集设定为utf-8,到网上仔细找下资料,原因在于TOMCAT 编码未设置原因,可以再server.xml配置文件中加上URIEncoding="UTF-8" 。这个以前也碰到过,不总结就会忘,所以今天有找了相关的资料总结一下javaweb乱码的原因。
1.浏览器拼中文参数乱码(即get方式提交)
浏览器根据页面的charset编码方式对页面进行编码,然后提交至服务器,Tomcat对于get提交方式采用
的是server.xml文件中的URIEncoding编码方式转码,而并不会采用过滤器中设置的编码转码,是如果浏览器中的编码方式和tomcat中配置的编码方式不同就会乱码,tomcat 中默认的编码方式是ISO-8859-1,所以今天才遇到这样的乱码。如果是其他系统需要调用你的接口,如果两个系统编码方式不同,在请求参数时,应将中文参数按接口系统的编码进行编码,才行。
所以今天遇到的乱码问题 我通过new String(变量值.getBytes("ISO-8859-1"),"UTF-8"); 转码能获取正
确变量值。
但像对于我现在用的 jersey框架,不是通过request.getParameter的方式获取而是采用@QueryParam
和@FormParam参数注解的方式获取就不会乱码。
2.POST方式提交
POST方式一般在后台过滤其中配置了编码格式,保持前后台一致就不会乱码。如果是外放接口,对方
编码不一样,需要将中文进行后台编码格式进行编码,才不会乱码。
3.页面链接中传递中文
保持页面(pageEncoding="你的编码")和tomcat编码方式相同即可。或者在页面中参数按tomcat编码
进行编码(URLEncoder.encode(参数值, input_charset) )后在传至后台。另一个解决办法是使用js的encodeURI或者encodeURIComponent方法,进行编码两次,后台再用你指定的编码解码一次,即可,因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的 Ascii 字符串。(这里把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的)。再编一次后,提交,接收时容器自动解一次 (容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1])。再在程序中实现一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder(***, "UTF-8")) 就可以得到想提交的参数的原值。(http://bbs.csdn.net/topics/330072196)
4.包含中文名的页面
如:测试.jsp 这个我确实很少用过,不过看网上资料如果浏览器的charset编码方式和tomcat编码一致
就不会乱码,建议还是少用这种方式
很多东西自己理解也不是很深刻,如果有错误地方欢迎指正。
相关推荐
JavaWeb 乱码问题终极解决方案 下面是从给定的文件中生成的相关知识点: 一、确认乱码发生的位置 在解决 JavaWeb 乱码问题时,首先要确认乱码的地方。出现乱码可能是浏览器显示问题,也可能是 Java 编码问题,也...
### JavaWeb乱码问题分析与解决 #### 一、引言 在JavaWeb开发中,乱码问题是开发者经常遇到的问题之一。它不仅会影响用户体验,还会对数据的正确性造成潜在威胁。本文将针对请求乱码及响应乱码两种情况进行深入剖析...
### 解决Javaweb乱码问题完整方案 在Javaweb开发过程中,字符编码问题经常困扰着开发者,特别是中文等多字节字符的处理。本文将详细讲解如何全面解决Javaweb中的乱码问题,确保网页内容正确显示。 #### 一、配置...
[总结]JavaWeb乱码问题 [转自IBM]中文编码问题 JDBC入门 Jdbc事务控制管理 常用数据库连接池 编写JDBC框架 客户信息管理系统 Servlet Filter 过滤器 HTTP 协议 文件上传和下载 Servlet事件监听器 JavaMail开发 ...
在 JavaWeb 技术开发中,中文乱码问题是由于 Java 系统的输入、输出和操作系统的默认编码字符集不一致导致的。 Java 系统内部使用 Unicode 来表示字符,但是在实际应用中,由于应用程序的运行环境不同,和各个本地...
总结来说,解决JavaWeb开发中的中文乱码问题,关键在于正确地设置字符编码。使用`HttpServletResponse`的`setCharacterEncoding`和`setContentType`方法可以确保数据在传输过程中的编码与接收端的解码保持一致,从而...
总之,解决JavaWeb中的乱码问题需要从多个层面进行考虑:设置过滤器统一请求和响应的编码,确保JSP页面的编码正确,以及在处理文件时注意文件内容的编码。通过这些方式,我们可以有效防止和解决乱码问题,提高应用...
在JavaWeb开发中,中文乱码问题是一个...总之,解决JavaWeb开发中的中文乱码问题,关键在于理解和掌握字符编码,以及熟练使用过滤器技术。通过以上方法,开发者可以有效地防止和解决乱码问题,提高应用程序的用户体验。
JavaWeb开发技术-解决中文输出乱码问题 ...解决中文输出乱码问题是JavaWeb开发中一个非常重要的问题,需要正确地设置编码方式、处理中文字符的输入和输出,并注意统一的编码方式和浏览器的编码方式。
综上所述,解决JavaWeb中的乱码问题需要从多个方面入手,包括但不限于HTML文档、Servlet请求响应、数据库连接、数据库表定义及服务器配置。只有确保各个环节的字符集设置一致且正确,才能有效避免乱码问题的发生。
本文旨在详细介绍如何解决Java Web项目中的乱码问题,包括如何统一开发环境、应用服务器及本地浏览器的编码格式。 #### 一、理解乱码产生的原因 在探讨解决办法之前,我们先来了解一下乱码产生的原因。通常情况下...
本项目"解决全站编码问题的javaWeb小项目"旨在提供一套完整的解决方案,确保在项目的各个层面都能正确处理字符编码,从而避免乱码问题。 1. **HTTP请求编码** 当用户通过浏览器发送请求时,请求参数可能包含非...
JavaWeb中字节乱码filter解决办法,其中包括tomcat各个版本进行字符设置.
通过这种方式,我们可以有效地避免由于编码不一致引发的各种乱码问题,提高用户体验。 综上所述,JavaWeb页面过滤器之编码过滤是确保Web应用正常运行,特别是处理中文字符时不可或缺的一部分。通过理解其原理和实现...
深入分析JavaWeb中文编码问题.doc
### JavaWeb开发中的中文乱码问题分析及解决方案 #### 摘要 在JavaWeb开发过程中,中文乱码问题是常见的技术挑战之一。该问题源于不同组件间的编码方式不一致,尤其是在涉及用户输入、数据库交互以及页面展示等环节...
解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题.pdf
### 利用过滤器解决JavaWeb(JSP)乱码问题 #### 一、问题背景与重要性 在JavaWeb开发中,特别是在使用JSP技术时,开发者常常会遇到中文字符显示异常的问题,即所谓的“乱码”。这不仅影响用户体验,还可能导致数据...