<SCRIPT type="text/javascript" charset="UTF-8">
<s:iterator var="per" value="#session.perList">
<s:property value="#per.Name"/>这里的值一直是乱码 </s:iterator>
</SCRIPT>
jsp页面的<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>perAction的方法里面也写了public String findAll(){
HttpServletRequest request = ServletActionContext.getRequest();
ServletActionContext.getResponse().setCharacterEncoding("UTF-8");
ServletActionContext.getResponse().setContentType("text/html;charset=UTF-8");
List list = perdao.findAll();
HttpSession sess = request.getSession();
sess.setAttribute("perList", list);
return SUCCESS;
}
页面上出现的数据还是乱码, 纠结死了。
list.getBytes没有找到这个方法?
在perAction里面的list还没出现乱码。
存进session里边,到jsp页面输出的时候就乱码了。
<s:property value="#per.Name"/>
</s:iterator>这个写在jsp页面的body里面输出是正常的。
但是写在javascript的标签里就会输出乱码。
用了, 但是jsp页面输出还是乱码。所以现在可以肯定在Action里面的时候还不是乱码。
一到jsp页面的javascript里面输出就乱码了。
1.页面都改成UTF-8格式
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2.如果页面时使用get提交方式:则使用request.setCharacterEncoding("utf-8");
3.如果是post提交方式:则使用字符创强转:String name = new String(request.getParameter("参数").getBytes("iso-8859-1"),"utf-8");
4.在web.xml文件里配置字符集过滤器(此方法只对post提交方式有作用)
<!-- 字符集过滤 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上是个人学习时的总结,有不对的可以指出,嘻嘻!
我配置了你的字符集过滤。 问题还是没有解决。我的问题很怪异。 同一个jsp页面 直接输出在页面上没乱码, 但是通过javascript来输出就乱码了。
public String findAll(){
HttpServletRequest request = ServletActionContext.getRequest();
ServletActionContext.getResponse().setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");//加上这一句就行了 ServletActionContext.getResponse().setContentType("text/html;charset=UTF-8");
List list = perdao.findAll();
HttpSession sess = request.getSession();
sess.setAttribute("perList", list);
return SUCCESS;
}
<script type="text/javascript" charset="utf-8" src=....
javascript里面乱码?你把javascript里的代码贴出来看看,用的xmlHttpRequest对象?
public String findAll(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletRequest response = ServletActionContext.getResponse()
response.setContentType("text/html;charset=UTF-8");//这个放在前面。
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
List list = perdao.findAll();
HttpSession sess = request.getSession(true); sess.setAttribute("perList", list);
return SUCCESS;
}
我之前也遇到过这样的问题,其它只要四个地方编码设置一致后,基本上不会出现乱码。
1、jsp页面设置
2、javascript引用设置编码
3、java中的resquest、response设置编码
4、数据库编码
只要这四个地方的编码一致,应该是不会出问题。
不过有一次,我这样设置后,也出现乱码了,后来发现把response.setContentType("text/html;charset=UTF-8")这个写在前面,后面再加上response.setCharacterEncoding("UTF-8")后问题解决。
应该是HttpServletResponse
没有用xmlHttpRequest对象。
$(document).ready(function() {
//输出的内容。
});
就这个。
在页面<%@ page language="java" pageEncoding="UTF-8"%>下面直接使用java代码试试,比如:
<%
String taskid = request.getParameter("taskid");
%>在函数里$(document).ready(function() {
alert(<%=taskid%>);
});我没有出现过你这样的情况,看这个能不能有效果
<SCRIPT type="text/javascript" charset="UTF-8">
<s:iterator var="per" value="#session.perList">
<s:property value="#per.Name"/><span style="color: rgb(255, 0, 0);">这里的值一直是乱码</span> </s:iterator>
</SCRIPT>你这个是后台传到前台的中文数据是乱码还是你直接在jsp中写的中文是乱码?
如果你是在jsp中写的中文是乱码的话,建议你重新建一个页面,然后把内容拷贝过来看看。最好中文的地方手工输入一下。
后台传到前台的中文数据不是乱码, 但是一到JSP页面给输出来 就是乱码了。
如果直接写死,中文, 也不是乱码。
我发现很奇怪的一件事,就是其他页面用
(1)s:iterator输出, 查看源代码的时候,都是乱码,但是显示在页面上又是正确的中文。
然后一些写死的中文,查看源代码之后,就不是乱码。
(2)我现在的这个页面如果s:iterator不是在javascript里面输出,而是在body里面直接输出,查看源代码依旧是乱码,但是页面上显示出来的又是正确的中文形式!
(1) 如果直接输出在body里面,jsp页面把s:iterator输出的乱码转成了正常显示的中文。
(2) 而在javascript里面来用s:iterator输出的话,jsp页面就直接显示了乱码,没有转换就显示出来了,所以就是乱码。不知道是不是这样。但是就算是这样,我也不知道肿么办啊!
如果不是乱码 在考虑过滤器 跟JSP的问题