日期:2014-05-17  浏览次数:20687 次

jsp到action乱码问题
大家好,我碰到个头疼的问题,是关于乱码的,我jsp表单提交到后台action接收到的是乱码这种乱码的格式是:中国工商银行
urlget方式传参时也是这样的乱码 求帮忙解决 谢谢 还有问下 这种编码是什么类型的编码啊?

------解决方案--------------------
楼上都解释很清楚了
首先看看你的form表单的method提交改成“post”
然后你把你的每个页面的编码方式都改成utf-8
例如
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

你应该是编码没改的问题
------解决方案--------------------
你把它封装后调用 应该就好了


以下是转帖:
项目中碰到的乱码问题,希望对同样碰到此问题的朋友有些帮助。至少我认为是最简便的方法。
原理:mysql默认的字符集是latin1,java中对应的就是ISO-8859-1字符集,所以存入数据时转换为ISO-8859-1,取出时再由ISO-8859-1转换为GBK就OK了。
import java.io.UnsupportedEncodingException;
//解决中文问题
public class EncodingUtil {
 
 //从数据库取出用
 public static String latin1ToGBK(String str)
 {
try {
String temp_p = str;
byte[] temp_t = temp_p.getBytes("ISO-8859-1");
String temp = new String(temp_t,"GBK");
return temp;
}catch (UnsupportedEncodingException ex) {
System.out.println(ex);
return "";
}

 }

 //存入中文数据时用
 public static String GBKToLatin1(String str)
 {
if(str==null)
{
str="";
}
else{
try{
str=new String(str.getBytes("GBK"),"ISO-8859-1");
}
catch(Exception ex){
ex.printStackTrace();
}
}
return str;
 }


}
 

------解决方案--------------------
一、极有可能是你用的是get方式提交的,因为在url里面需要显示提交的数据(http://localhost:8080/mjsp?a=""&b=""),url的编码不同,所以你提交之后的编码方式就不是你之前设置好的编码格式。如果是这种情况就需要重新对数据编码,用String context = new String(你想要拿的参数.getBytes("iso-8859-1"),"UTF-8");或者就直接改用post方式提交。

二、request.setCharacterEncoding("utf-8");servlet中这句话有木有?

三、在项目文件中的web.xml文件的开头第一行改为<?xml version="1.0" encoding="UTF-8"?>(主要是UTF-8的部分,1.0是版本号)