用户登录成功之后跳转到的jsp页面显示中文乱码,怎么解决?

以下是我的struts.xml ,当登录成功之后由<result name="frame" >/console/frame.jsp</result> 跳转到 frame.jsp,frame.jsp 中出现中文乱码 , frame.jsp 中只有一句话 : 登录成功! 。
登录成功! 这几个字就显示为 ????! 怎么解决?

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true"/> <!-- DEBUGģʽ -->
<constant name = "struts.enable.DynamicMethodInvocation" value = "false" />
<constant name = "struts.i18n.encoding" value = "utf-8" />

<constant name="struts.objectFactory" value="spring" />
<constant name="struts.multipart.saveDir" value="c:\"></constant>

<package name="ajax" extends="json-default">

<action name="*UserAction" class="UserAction" method="{1}">

<result name="frame" >/console/frame.jsp</result>
<result name="error" >/console/error.jsp</result>

</action>

</package>
</struts>
上面的是我的 struts.xml 文件 我的jsp 编码有 <%@ page contentType="text/html; charset=utf-8"%> 这个已经加了 还是有上边的编码错误!

原因是你页面没有设置编码。加上
<%@ page contentType="text/html; charset=utf-8"%>
你要把页面贴出来,你直接访问那个jsp
看是否乱码。如果是乱码就是jsp页面本身的问题

如果不少页面本身问题就参考下面:
1在struts2里面,最好将所有字符都设成utf-8。

1.1 在jsp页面设定字符编码。这边有必有说明的是如果是jsp+java bean+servlet的方案。中文乱码很好解决,统一设成gb2312就可以了。但如果用struts框架就不能设成gb2312,要改成utf-8。

<%@ page contentType="text/html; charset=UTF-8"%>

<%@ page pageEncoding="UTF-8" %>

2.2 在struts.properties 添加:

struts.devMode=false

struts.enable.DynamicMethodInvocation=true

struts.i18n.reload=true

struts.ui.theme=simple

struts.locale=zh_CN

struts.i18n.encoding=UTF-8

struts.serve.static.browserCache=false

struts.url.includeParams=none

其中locale、encoding就是字符集的设定了。

2.3 在web.xml加个filter

如下:

<!-- zh-cn encoding -->

<filter>

<filter-name>struts-cleanup</filter-name>

<filter-class>

org.apache.struts2.dispatcher.ActionContextCleanUp

</filter-class>

</filter>

<filter-mapping>

<filter-name>struts-cleanup</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

通过上述方法,基本就可以搞定中文乱码的问题了。当然,也有例外。象在我的一个项目碰到一个中文乱码,就是从页面跳转到另一个页面,然后update进mysql。结果乱码。后来才发现是页面重复设定字符集了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-07

两种情况,jsp上显示的数据来源于servlet的话,那么就在servlet中加入

//这句话的意思,是让浏览器用utf8来解析返回的数据
// response.setHeader("Content-type", "text/html;charset=UTF-8");
//这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
response.setCharacterEncoding("UTF-8");

如果jsp的数据就是在jsp中的。那么再jsp中加入

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

pageEncoding="UTF-8"这个是关键

第2个回答  2009-09-23
不应该呀,页面的数据又不是从别的页面取来的,怎么会乱码吗?如果你的编码都统一的话,不应该出现这种状况的,还有就是你浏览器的编码是什么?是UTF-8的吗?
第3个回答  2009-09-23
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
第4个回答  2009-09-23
楼上两位说的都不行啊! 我已经用过了!
相似回答