<%@page language="java" pageEncoding="UTF-8"%>
<%@page contentType="text/html; charset=UTF-8" %>
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
tomcat服务器也设置了
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
/>
但是一提交表单,value的中文内容就变为了乱码。还有一刷新文本输入框也成了乱码。通过 new String(sf.getName().getBytes("ISO8859_1"),"UTF-8"))这个语句能显示正常
bean.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page language="java" pageEncoding="UTF-8"%>
<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
兴趣:唱歌
跳舞
游泳
地区:北京
上海
天津
广州
/html:form
/html:html
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.action;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.yourcompany.struts.form.SimpleForm;
/**
* MyEclipse Struts
* Creation date: 10-26-2015
*
* XDoclet definition:
* @struts.action input="/bean.jsp" validate="true"
*/
public class SimpleAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
* @throws UnsupportedEncodingException
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
SimpleForm sf=(SimpleForm)form;
String[] inst=sf.getInst();
System.out.println("兴趣:"+inst.length);
for(int i=0;i<inst.length;i++){
System.out.println(inst[i]+"、");
}
String citylist="";
String[] city=sf.getCity();
System.out.println("城市:");
for(int i=0;i<city.length;i++){
System.out.println(city[i]+"、");
citylist+=city[i]+"..";
}
request.setAttribute("citylist",citylist);
request.setAttribute("name", new String(sf.getName().getBytes("ISO8859_1"),"UTF-8"));
return mapping.findForward("show");
}
}
看看这个jsp文件本身是什么编码方式
提交到后台的时候,前后台都编码。前台用js编码,后台用Java的URLDecode进行解码。
看一下后台的编码和解码方式
把汉字删掉再写一遍,有可能代码是拷贝或者其他地方来的,本来就不是utf编码,然后在转码时候就直接转成乱码了
注意检查下你的工程是utf-8格式的吗?
如果最后还是不行的话,你把这个jsp文件删除,然后再创建一个jsp文件,注意,报错这个jsp文件的时候文件编码是utf-8