用户登录成功之后跳转到的jsp页面显示中文乱码,怎么解决?
以下是我的struts.xml,当登录成功之后由<resultname="frame">/console/frame.jsp</result>跳转到frame.jsp,f...
以下是我的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"%> 这个已经加了 还是有上边的编码错误! 展开
登录成功! 这几个字就显示为 ????! 怎么解决?
<?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。结果乱码。后来才发现是页面重复设定字符集了。
<%@ 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。结果乱码。后来才发现是页面重复设定字符集了。
展开全部
两种情况,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"这个是关键
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不应该呀,页面的数据又不是从别的页面取来的,怎么会乱码吗?如果你的编码都统一的话,不应该出现这种状况的,还有就是你浏览器的编码是什么?是UTF-8的吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.setContentType("text/html;charset=UTF-8");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上两位说的都不行啊! 我已经用过了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询