0 0

【急】通过get方式提交中文表单,跳转的页面乱码5

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'normal.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
   神马叫计算机?<br>
   
    <form action="jsp/show.jsp" method="get">
    	<input type="text" name="name"></input>
    	<input type="submit" value="sub"/>
    </form>
  </body>
</html>

 我想从上面这个页面normal.jsp用提交表单的方式跳转到show.jsp,采用get方式,并在text文本框中输入中文“中国”,点击提交,我的页面编码是pageEncoding="UTF-8"。

tomcat中的  URIEncoding='GBK' ,这个我不能改,因为项目原来就是这个。

下面是跳转到的页面show.jsp,也是采用contentType="text/html; charset=UTF-8"(我不知道这边写pageEncoding和contentType中的一个,两者是否就统一了)

http://localhost:8886/test/jsp/show.jsp?name=%B6%A1%CE%C4%B3%BF

但是跳转后   ① "神马叫计算机?"还是正常的显示没有乱码。

                  ② text文本框中的中文“中国”出现乱码

 

但是当我改动起始页面normal.jsp中的pageEncoding="GBK"后,①②都是正常的 没有出现乱码。(这个我不知道为什么

 

show.jsp

 

 

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>show.jsp</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  	显示<br>
    	<%=request.getParameter("name") %>
  </body>
</html>

 

因为网上找过解决方法 是添加过滤器的,我也加了如下

 

 

<filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
  </filter>

<filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping> 
 

 但是现在的问题是①为什么上面我改动normal.jsp的pageEncoding为GBK后,表单传递的中文不乱码了

②我的fileter设置和tomcat中的URIEcooding到底哪个起作用了。

③我知道post方式默认是使用ISO-8859-1提交表单到服务器端的,那么get方式中的参数是以什么编码提交的,去哪里可以改变编码方式

乱码问题搞的我好乱,请大家指教


问题补充:<div class="quote_title">zyn010101 写道</div><div class="quote_div">看下tomcat的server.xml文件中默认编码,保证它和页面一致。</div> <br />回去写了比对的代码 发现是这样的 还想问下 我后来不设置pageEncoding 只写contentType的话 pageEncoding 要不要写了啊 这两个是不是只要写一个就行了,一般都写谁
2012年4月20日 14:43

3个答案 按时间排序 按投票排序

0 0

jsp页面只设置pageEncoding就好了。

2012年4月23日 08:44
0 0

看下tomcat的server.xml文件中默认编码,保证它和页面一致。

2012年4月20日 22:35
0 0

亲,我一一解答你的问题。
①当你的tomcat和页面编码为GBK时。get提交过去,系统会采用tomcat这个全局配置进行解码。也就是iso-8859-1转GBK.
②就近原则。
③get提交是追加到url中的,当然也是iso-8859-1。通常针对get提交乱码只能一个一个参数进行解码。post提交是放到请求体中的,设置contextType为text/html utf-8就OK,但对get提交就没有用了。所有一般在get提交的时候,尽量不传中文。

2012年4月20日 18:23

相关推荐

    java中文乱码分析

    - 对于GET请求(如导出Excel、页面带参数跳转等),建议统一使用方法二。 - 如果测试环境中部分Tomcat配置了`server.xml`文件中的`URIEncoding="UTF-8"`,则可以考虑在客户端进行两次`URL encode`处理,以确保兼容性...

    html form表单提交action和url跳转到actiond的区别介绍

    总结起来,`&lt;form&gt;`表单的`action`属性主要用于向服务器提交数据,可以使用`POST`或`GET`方法,而URL跳转主要用于页面间的导航,通过URL参数传递少量数据。两者在数据安全性、数据量以及数据可见性方面都有所不同,...

    JavaEE 实验程序集

    - `&lt;form&gt;`标签:包含`action`属性指定处理页面的位置和`method`属性指定提交方式,如GET或POST。 - `&lt;input&gt;`标签: - `type=text`:用于姓名输入,`name`属性定义字段名,`size`定义输入框宽度,`value`设定...

    一些 SERVLET 的笔记

    - 当表单提交方式为POST时,Servlet应该提供一个`doPost()`方法来处理请求。 2. **解决中文乱码问题**: - 设置响应编码格式,如: ```java response.setContentType("text/html;charset=GBK"); ``` - 设置...

    JSP内置对象之域对象和JSP指令

    - 当表单提交数据时,如果表单提交方式为POST,则可以在处理请求前添加以下代码以解决乱码问题: ```jsp request.setCharacterEncoding("UTF-8"); ``` 3. **解决GET请求乱码**: - 对于GET请求中的中文参数,...

    笔试JSP1.doc

    forward 和 redirect 是两种不同的页面跳转机制: * forward:在服务器端跳转,客户端不知道跳转的过程 * redirect:在客户端跳转,客户端知道跳转的过程 6. JSP 内置对象 JSP 内置对象包括: * request:请求...

    PHP开发实战1200例源码

    实例153 通过GET方法提交表单元素 184 实例154 通过$_GET方法获取表单元素 185 3.2 文本框组件的应用 186 实例155 以文本域的形式显示数据信息 186 实例156 限制多行文本域输入的字符个数 187 实例157 设置文本框的...

    JAVA框架面试题汇总 (2).docx

    POST请求中文乱码可以通过在web.xml中配置CharacterEncodingFilter来解决,设置字符编码为UTF-8。GET请求的乱码问题,可以修改Tomcat配置文件,设置URIEncoding为UTF-8,或者在代码中对参数进行重新编码,从ISO8859-...

    CSDN上传文件.docx

    - **知识点概述**:在Web开发中,经常遇到字符编码问题,特别是当表单中包含中文等非ASCII字符时,容易出现乱码。 - **解决方案**: - **设置表单字符编码**:在HTML表单中添加`&lt;form accept-charset="UTF-8"&gt;`属性...

    PHP base64编码后解码乱码的解决办法

    用户在提交表单或执行某些操作后,服务器通过GET参数将base64编码后的提示信息传递给一个HTML模板,然后在模板中使用base64_decode进行解码并显示。当提示信息包含非ASCII字符,如汉字时,就可能出现乱码现象。 ...

    关于java设计的毕设答辩.doc

    5. **处理页面乱码**:当遇到JSP页面显示乱码时,可以通过设置页面编码(如`contentType="text/html; charset=gb2312"`)来解决。在接收表单数据时,需设定请求字符编码,例如`request.setCharacterEncoding("gb2312...

    JSPJSP.doc

    当表单提交方式为`GET`时,若不处理编码问题,中文数据在服务器端可能会出现乱码。解决办法是确保服务器端和客户端的字符编码一致,通常在接收请求参数时设置正确的字符编码,如`request.setCharacterEncoding("UTF...

    Servlet板书

    - POST方式:仅限于表单提交,可以通过JavaScript动态改变表单的提交方式。 6. **多值参数处理**: - 对于多个同名参数,`getParameterValues()`方法返回一个字符串数组,如获取多个ID。 7. **请求转发和重定向*...

    php download.php实现代码 跳转到下载文件(response.redirect)

    这与302 Found状态码不同,302状态码通常不建议用于POST请求后的重定向,因为它可能会导致重复提交表单数据。 5. **URI完整性和输出控制**: 在邮件中的讨论中,提到使用`'Status: 303 See Other'`比`'...

    jsp文档 jsp资料 jsp重要知识点

    - GET/POST乱码:GET方式修改`server.xml`的`URIEncoding`,POST方式使用`request.setCharacterEncoding("GBK")`。 - URL参数包含中文:同样使用`request.setCharacterEncoding("GBK")`。 7. **Cookie与Session的...

    图书馆管理系统代码

    - **执行删除操作**:通过`request.getParameter("sh")`获取表单提交的图书编号,然后利用`stmt.executeUpdate("delete from ts where sh='" + id + "'")`执行SQL删除命令。 - **重定向**:使用`response....

    java/jsp面试红宝书

    - GET方式乱码,可在服务器端设置请求编码,如:`request.setCharacterEncoding("GBK")`。 - POST方式乱码,同样需在接收参数前设置编码。 - URL包含中文参数,需在JSP页面中设置请求编码。 7. **Cookie与...

    JavaWeb个人学习笔记

    在Web开发中,请求转发和重定向是两种常用的页面跳转方式。 - **请求转发**:发生在服务器端,服务器内部将请求发送给另一个资源。这种方式可以传递请求中的数据,且跳转的地址不会在浏览器的地址栏中显示。请求...

    struts快速入门

    - 使用自定义过滤器解决中文乱码问题,例如在 `MyFilter1.java` 中通过调用 `request.setCharacterEncoding("utf-8")` 来设置请求字符集编码。 #### 六、Struts配置详解 - **Scope 属性**:默认情况下,表单对象会...

    extjs和struts的技术结合

    11. **Ext JS中文乱码解决方案**:在开发过程中,可能会遇到中文乱码问题,这通常与编码设置有关,需要确保项目编码、服务器编码、浏览器编码一致。 12. **Eclipse中JS中文乱码**:Eclipse作为IDE,其JavaScript...

Global site tag (gtag.js) - Google Analytics