`

总结jsp提交中文乱码

阅读更多

1: 最基本的乱码问题。

首先要明白jsp提交表单默认的提交方式是get,如果要用post必须明确声明method="post"。
这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导致的乱码。
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>中文问题</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
</head>
<body>
   我是个好人
</body>

三个地方的编码。

第一个地方的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。

第 二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1,这样 如有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,“我是个好 人”也会出现乱码。必须一致才可以。

第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式。出现了乱码。


2:表单使用Post方式提交后接收到的乱码问题
这个问题也是一个常见的问题。这个乱码也是tomcat的内部编码格式iso8859-1在捣乱,也就是说post提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,(tomcat默认编码:ISO8859-1)接受的jsp却以utf-8的方式接受。导致乱码。既然这样的原因,下面有几种解决方式,并比较。
A :接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;

这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。

B :在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在 转码了。直接使用String str request.getParamet("something");即可得到汉字参数。但每页都需要执行这句话。这个方法也就对post提交的有效果,对 于get提交和上传文件时的enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。

C :为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。

3 :表单get提交方式的乱码处理方式

如果使用get方式提交中文,接受参数的页面也会出现乱码,这个乱码的原因也是tomcat的内部编码格式iso8859-1导致。Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导致接受页面得到的参数为乱码。

解决办法:

A 使用上例中的第一种方式,对接受到的字符进行解码,再转码。

B Get走的是url提交,而在进入url之前已经进行了iso8859-1的编码处理。要想影响这个编码则需要在
server.xml 的Connector节点增加useBodyEncodingForURI="true" 属性配置,即可控制tomcat对get方式的汉字编码方式,上面这个属性控制get提交也是用 request.setCharacterEncoding("UTF-8")所设置的编码格式进行编码。所以自动编码为utf-8,接受页面正常接受就 可以了。但我认为真正的编码过程是,tomcat又要根据
<Connector port="8080" 
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
enableLookups="false" redirectPort="8443" acceptCount="100" 
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true" 
disableUploadTimeout="true" 
URIEncoding=”UTF-8”/>
里面所设置的URIEncoding=”UTF-8”再进行一次编码,
但是由于已经编码为utf-8,再编码也不会有变化了。
如果是从url获取编码,接受页面则是根据URIEncoding=”UTF-8”来进行解码的。

 

引自:http://www.blogjava.net/luedipiaofeng/articles/307666.html

分享到:
评论

相关推荐

    解决jsp提交乱码的问题

    ### 解决JSP提交乱码的问题 在进行Web开发时,经常会遇到中文字符编码的问题,尤其是在使用JavaServer Pages(JSP)技术时。本篇文章将详细介绍如何解决JSP页面提交时出现的乱码问题,包括GET请求和POST请求两种...

    JSP中文乱码问题解决总结

    在IT行业中,尤其是在Web开发领域,JSP(JavaServer Pages)是常见的动态网页技术,而中文乱码问题一直是开发者们经常遇到的困扰。本篇文章将深入探讨JSP中文乱码问题的原因、解决策略以及预防措施。 一、乱码产生...

    JSP页面中文乱码几个解决办法

    总结来说,解决JSP页面中文乱码问题的关键在于保持字符编码的一致性,从编辑器保存文件的编码、JSP页面的编码声明、Servlet的响应编码、POST请求的参数编码,到服务器处理GET请求的编码,都需要进行适配和统一。...

    Servlet及jsp解决中文乱码问题

    ### Servlet及JSP解决中文乱码问题 #### 一、引言 在Web开发中,中文乱码问题一直是困扰开发者的一大难题。特别是在使用Java技术栈(如Servlet与JSP)进行开发时,如果处理不当,很容易出现中文字符显示乱码的情况...

    JSP中文乱码处理JSP中文乱码处理

    在Web开发中,JSP中文乱码是一个常见的问题,主要涉及页面显示、表单提交以及数据库操作等环节。理解并掌握这些环节的编码处理至关重要,以确保数据的准确性和用户体验。 1. **JSP文件的编码与保存** JSP文件本质...

    jsp eclipse乱码问题

    2. **参数传递乱码**:在表单提交或URL传参过程中,中文等非ASCII字符无法正确识别或解析。 #### 二、乱码产生的原因 1. **编码设置不一致**:JSP页面、客户端(浏览器)以及服务器端的编码设置如果不统一,则会...

    jsp乱码解决方案 本方案解决了jsp常见的乱码问题

    1. **客户端编码与服务器端编码不一致**:当用户提交表单或发送请求时,如果客户端浏览器使用的编码方式与服务器端接收并处理请求时所采用的编码方式不一致,就可能产生乱码。 2. **数据库与应用程序编码不一致**:...

    JSP中文乱码常见3个例子及其解决方法.docx

    在JSP开发中,中文乱码是一个常见的问题,主要源于Web容器默认采用ISO-8859-1字符集,无法正确处理中文字符。本文将详细介绍三个常见的JSP中文乱码例子及其解决方法。 实例一:JSP页面显示时的乱码 在JSP页面直接...

    JSP出现中文乱码问题解决方法详解.docx

    三、表单提交中文乱码 当表单数据包含中文并且通过POST方法提交时,需要在服务器端正确处理请求参数的编码。在JSP中,可以使用`request.setCharacterEncoding("UTF-8")`在接收请求前设置请求编码,确保与表单提交时...

    JSP中文乱码的产生原因及解决方案

    总结来说,解决JSP中文乱码问题的关键在于理解不同环节的字符集设置,并确保它们之间的一致性。从源文件的编码到页面显示、HTTP交互、数据库操作以及文件读写,每个环节都需要正确设置字符集,以确保中文字符能够...

    解决JSP页面中文乱码问题

    特别是在接收表单提交的数据或者显示数据库查询结果时,中文字符可能会出现乱码的情况。这对于初学者来说可能是一个比较棘手的问题。 #### 二、基本原理 要解决JSP页面中文乱码问题,我们需要理解以下几个关键点:...

    jsp中文乱码过滤器

    **JSP中文乱码过滤器详解** 在Java Web开发中,JSP(JavaServer Pages)是一种常见的用于创建动态网页的技术。然而,当处理包含中文字符的数据时,可能会遇到乱码问题,这通常与字符编码设置有关。为了解决这个问题...

    解决jsp中文乱码问题(转)

    在用户通过表单提交中文数据时,可能出现乱码,因为浏览器通常使用UTF-8编码发送POST请求,而服务器可能采用其他编码处理这些数据。为解决此问题,可以在处理请求的JSP页面中,使用`request.setCharacterEncoding(...

    5种JSP页面显示为乱码的解决方法

    总结,解决JSP页面乱码问题的关键在于理解字符编码的重要性,并在合适的位置设置正确的字符集。通过在JSP文件、请求处理、页面跳转以及数据库操作中处理字符编码,可以有效地避免乱码问题的发生,确保数据的正确性和...

    JSP中文乱码问题完全解决方案(罗列了在JSP学习中出现的各种乱码问题)

    #### 四、表单提交中文乱码 在使用POST方法提交表单数据时,若表单字段包含中文字符,也容易遇到乱码问题。 **解决方案:** 1. **设置表单编码:** 在`&lt;form&gt;`标签中使用`enctype`属性设置编码格式,例如: ```...

    Jsp乱码问题解决

    #### 二、表单提交中文时出现乱码 当用户通过表单提交含有中文的数据时,如果编码设置不当,也很容易出现乱码。 **原因分析:** 1. **默认编码冲突:** 浏览器默认使用UTF-8编码方式来发送请求数据,而如果后端...

    jsp页面乱码最简单的解决办法

    ### jsp页面乱码最简单的解决办法 在Web开发中,尤其是使用Java Server Pages (JSP)进行网页制作时,经常遇到的一个问题是字符编码问题,即所谓的“乱码”。这不仅影响用户体验,还可能导致数据处理错误。本文将...

    解决jsp+servlet开发中的中文乱码问题

    当用户通过表单提交中文数据时,如果没有正确地设置字符集,那么在JSP页面或Servlet中读取这些数据时将可能出现乱码。这是因为默认情况下,`request`对象会使用ISO-8859-1字符集来处理POST请求的数据,而这个字符集...

    JSP+ MySQL中文乱码问题post提交乱码解决方案

    总结来说,解决JSP+MySQL中文乱码问题的关键在于确保页面编码、数据库编码以及浏览器解析编码三者保持一致。开发者需要在JSP页面、数据库以及服务器连接设置中,明确指定并统一使用`UTF-8`或`gb2312`编码。在实现上...

Global site tag (gtag.js) - Google Analytics