我所有该设置UTF-8的地方都设置了,但是JSP页面还是显示乱码

<%@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">




<%request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
%>

空!!/logic:notPresent

${citylist}


${name}




兴趣:唱歌
跳舞
游泳
地区:北京
上海
天津
广州


/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");
    }
}

注意检查下你的工程是utf-8格式的吗?
工程编码格式

看看这个jsp文件本身是什么编码方式

提交到后台的时候,前后台都编码。前台用js编码,后台用Java的URLDecode进行解码。

看一下后台的编码和解码方式

把汉字删掉再写一遍,有可能代码是拷贝或者其他地方来的,本来就不是utf编码,然后在转码时候就直接转成乱码了

注意检查下你的工程是utf-8格式的吗?

如果最后还是不行的话,你把这个jsp文件删除,然后再创建一个jsp文件,注意,报错这个jsp文件的时候文件编码是utf-8