`

javaweb 编码问题

阅读更多

今天在测试一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乱码问题终极解决方案.docx

    JavaWeb 乱码问题终极解决方案 下面是从给定的文件中生成的相关知识点: 一、确认乱码发生的位置 在解决 JavaWeb 乱码问题时,首先要确认乱码的地方。出现乱码可能是浏览器显示问题,也可能是 Java 编码问题,也...

    javaweb乱码问题分析与解决.md

    ### JavaWeb乱码问题分析与解决 #### 一、引言 在JavaWeb开发中,乱码问题是开发者经常遇到的问题之一。它不仅会影响用户体验,还会对数据的正确性造成潜在威胁。本文将针对请求乱码及响应乱码两种情况进行深入剖析...

    javaweb乱码

    ### 解决Javaweb乱码问题完整方案 在Javaweb开发过程中,字符编码问题经常困扰着开发者,特别是中文等多字节字符的处理。本文将详细讲解如何全面解决Javaweb中的乱码问题,确保网页内容正确显示。 #### 一、配置...

    JAVAWeb全课程笔记( html版)

    [总结]JavaWeb乱码问题 [转自IBM]中文编码问题 JDBC入门 Jdbc事务控制管理 常用数据库连接池 编写JDBC框架 客户信息管理系统 Servlet Filter 过滤器 HTTP 协议 文件上传和下载 Servlet事件监听器 JavaMail开发 ...

    关于处理Javaweb中中文乱码的问题文.pdf

    在 JavaWeb 技术开发中,中文乱码问题是由于 Java 系统的输入、输出和操作系统的默认编码字符集不一致导致的。 Java 系统内部使用 Unicode 来表示字符,但是在实际应用中,由于应用程序的运行环境不同,和各个本地...

    JavaWeb开发技术-解决中文输出乱码问题.docx

    总结来说,解决JavaWeb开发中的中文乱码问题,关键在于正确地设置字符编码。使用`HttpServletResponse`的`setCharacterEncoding`和`setContentType`方法可以确保数据在传输过程中的编码与接收端的解码保持一致,从而...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    总之,解决JavaWeb中的乱码问题需要从多个层面进行考虑:设置过滤器统一请求和响应的编码,确保JSP页面的编码正确,以及在处理文件时注意文件内容的编码。通过这些方式,我们可以有效防止和解决乱码问题,提高应用...

    JavaWeb开发中文乱码问题解决方案

    在JavaWeb开发中,中文乱码问题是一个...总之,解决JavaWeb开发中的中文乱码问题,关键在于理解和掌握字符编码,以及熟练使用过滤器技术。通过以上方法,开发者可以有效地防止和解决乱码问题,提高应用程序的用户体验。

    JavaWeb开发技术-解决中文输出乱码问题.pptx

    JavaWeb开发技术-解决中文输出乱码问题 ...解决中文输出乱码问题是JavaWeb开发中一个非常重要的问题,需要正确地设置编码方式、处理中文字符的输入和输出,并注意统一的编码方式和浏览器的编码方式。

    javaweb乱码解决方法

    综上所述,解决JavaWeb中的乱码问题需要从多个方面入手,包括但不限于HTML文档、Servlet请求响应、数据库连接、数据库表定义及服务器配置。只有确保各个环节的字符集设置一致且正确,才能有效避免乱码问题的发生。

    javaweb项目中乱码的处理

    本文旨在详细介绍如何解决Java Web项目中的乱码问题,包括如何统一开发环境、应用服务器及本地浏览器的编码格式。 #### 一、理解乱码产生的原因 在探讨解决办法之前,我们先来了解一下乱码产生的原因。通常情况下...

    解决全站编码问题的javaWeb小项目

    本项目"解决全站编码问题的javaWeb小项目"旨在提供一套完整的解决方案,确保在项目的各个层面都能正确处理字符编码,从而避免乱码问题。 1. **HTTP请求编码** 当用户通过浏览器发送请求时,请求参数可能包含非...

    JavaWeb中字节乱码filter解决办法

    JavaWeb中字节乱码filter解决办法,其中包括tomcat各个版本进行字符设置.

    JavaWeb页面过滤器之编码过滤

    通过这种方式,我们可以有效地避免由于编码不一致引发的各种乱码问题,提高用户体验。 综上所述,JavaWeb页面过滤器之编码过滤是确保Web应用正常运行,特别是处理中文字符时不可或缺的一部分。通过理解其原理和实现...

    深入分析JavaWeb中文编码问题.doc

    深入分析JavaWeb中文编码问题.doc

    JavaWeb开发中的中文乱码问题分析及解决方案.docx

    ### JavaWeb开发中的中文乱码问题分析及解决方案 #### 摘要 在JavaWeb开发过程中,中文乱码问题是常见的技术挑战之一。该问题源于不同组件间的编码方式不一致,尤其是在涉及用户输入、数据库交互以及页面展示等环节...

    解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题.pdf

    解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题.pdf

    利用过滤器解决JavaWeb(JSP)乱码问题

    ### 利用过滤器解决JavaWeb(JSP)乱码问题 #### 一、问题背景与重要性 在JavaWeb开发中,特别是在使用JSP技术时,开发者常常会遇到中文字符显示异常的问题,即所谓的“乱码”。这不仅影响用户体验,还可能导致数据...

Global site tag (gtag.js) - Google Analytics