jsp中用javaBean传中文参数是乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp中用javaBean传中文参数是乱码相关的知识,希望对你有一定的参考价值。

html页面中有:
<p>
<font size="3">
客户名称: <input type="text" name="name" size="12" maxlength="12">
电话: <input type="text" name="tel" size="12" maxlength="12">
住址: <input type="text" name="addr" size="30" maxlength="30"> </font>
</p>

JAVABEAN中有:
public class Customer
private String name="";
private String tel="";
private String addr="";
......

JSP页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" errorPage="orderErrorPage.jsp"%>

<jsp:useBean id="customer" class="beans.Customer" scope="request">
<jsp:setProperty name="customer" property="*"/>
</jsp:useBean>
......
<p><font size=3>
客户:<%=customer.getName() %>
电话:<%=customer.getTel() %>
住址:<%=customer.getAddr() %>
</font></p>
一楼的,这样改是不行。仅仅使IE使用了gb2312,而且在TOMCAT中以前做的例子都改了这个参数: uRIEncoding="UTF-8"
二楼的,这也行不通啊!response.setCharacterEncodeing("gbk")在servlet中这样加倒是可以,熟悉servlet的高手现身吧~现在用这个javaBean传递为何就不行。。
三楼的,增加过滤器的方法还没试过,第二种方法也是不行
四楼的,回答得很聪明
五楼的,也试过,仍然不出。

怪怪~~到现在不用JAVABEAN传参数也有问题了。。。

stuts好像只能使用过滤器处理,注意,只能POST方法起作用。GET方法不行,只能修改Tomcat的配置文件修改缺省内码。:

给你一个filter例子。
写一个这样的java文件,包名自己改。
package test.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class EncoderFilter implements Filter

public void init(FilterConfig config) throws ServletException



public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
if (request instanceof HttpServletRequest)
HttpServletRequest httpRequest = (HttpServletRequest)request;
httpRequest.setCharacterEncoding("gb2312");

chain.doFilter(request, response);


public void destroy()


修改web.xml文件,在
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
下面增加如下行:
<filter>
<filter-name>EncoderFilter</filter-name>
<filter-class>test.filter.EncoderFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>EncoderFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>

2,Tomcat配置文件。
版本不同配置位置可能不太一样,去找找tomcat的conf目录里面的xml文件中的相关配置吧。
参考技术A 呵呵 你需要的就是了解 GBK\GB2312\UTF-8\ISO-8859-1 这几种编码方式的用法和作用 以及历史背景 以后再遇到这种问题的时候就可以轻松地解决了 你要是不知道在哪里的话 可以直接"百度一下"
祝你成功!~本回答被提问者采纳
参考技术B request.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");
把这2句放在你的jsp页面<%%>里的开头应该就可以了
参考技术C 把这句<%request.setCharacterEncoding("GBK");%>加到body标签的第一行

应该可以吧,用<% %>扩起来,还有是request不是response
参考技术D 你将jsp中pageEncoding="utf-8"的utf-8编码改成gb2312试试看,
不就是这页出现乱码吗?这样解决不了这页的乱码吗?

JSP页面乱码全解析

  乱码指的是中文乱码。

一.POST乱码

  由于两个页面都是用UTF-8编码,但是参数的传输默认是ISO-8859-1,这时候可以在接受参数之前

request.setCharacterEncoding("UTF-8");

二.GET乱码

  如下方式,

<a href="mainPage.jsp?userName=李四">测试Get方法(URL传参数)</a>

  浏览器地址栏和显示结果会乱码,可以获取参数后按UTF-8编码

String str= request.getParameter("userName");
String userName = new String(str.getBytes("ISO-8859-1"),"UTF-8");

  但是每次GET都这么做会很麻烦,修改Tomcat的server.xml的Connector,这个也是更改默认端口的地方,最后加入URIEncoding="UTF-8"。

   <Connector port="9999" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

  还有一种就是修改tomcat的server.xml配置文件,参照tomcat帮助文档中的/docs/config/index.html 文档的useBodyEncodingForURI 属性。为Connector 节点添加useBodyEncodingForURI="true" 属性即可。

以上是关于jsp中用javaBean传中文参数是乱码的主要内容,如果未能解决你的问题,请参考以下文章

href 传值 中文乱码问题

为啥jsp页面中传入JavaBean对象里面的中文参数在调试时显示成员变量是乱码?

为啥jsp使用URL传中文参数会乱码

两个jsp之间传参数乱码

jsp页面传中文参数乱码问题

jsp页面传中文参数乱码问题