jquery post 乱码 提交到struts2 中文乱码 很多方法都试过了..采用的都是utf-8

2024-11-24 13:05:22
推荐回答(5个)
回答1:

你好,这问题我遇到过,如果你确定你的Struts端和JSP端都统一设置成UTF-8的话,那么你这么做。
以下解决方法不分顺序,按照自己的配置对比.
1 struts2配置

struts2在配置struts.properties文件中加上struts.i18n.encoding=UTF-8 或者在struts.xml里加上

2 数据库

2.1 mysql的表的编码方式,其DDL应该为: ENGINE=InnoDB DEFAULT CHARSET=utf8; 可以使用show create table tbname查看.

2.2 安装mysql数据库时就应该以utf8编码默认安装查看mysql数据库默认编码方式可以在其目录下my.ini文件中找到mysql和mysqld下default-character-set值为utf8或者在mysql数据库命令行下以"\s;"查看.

3 页面

每个页面上加上<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> 这样在jsp页面里,注意在jsp文件上点右键,编码方式为UTF-8时,才正确,这点很重要。

4 jdbc连接

设置characterencoding为UTF-8 如jdbc.mysql.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF8

5 tomcat

为了保证get/post数据都采用相同的UTF8编码,我们在server.xml中进行了如下设置:
好了,OK。搞定。

回答2:

在js中先给他转码
var contents = unicode(data);
后台接收后 给他转回来
/**
* 将页面传来的Unicode字符编码转换为正常字符

public static String ConverUnicode(String source){
Pattern p = Pattern.compile("^[0-9]*$");
Matcher m = null;
if(source != null && !source.equalsIgnoreCase("")){
m = p.matcher(source);
if (m.matches()) {
return source;
}
StringBuffer sb=new StringBuffer();
String[] sa = source.split(";");

for(int i=0; i String tp = sa[i];
tp = tp.replace("&#", "");
int charCode = Integer.parseInt(tp);
sb.append((char)charCode);
}

return sb.toString();
}else{
return "";
}
}

嘎嘎 这是我正在项目里面解决的方法 ,祝你好运。

回答3:

传中文参数本来就是种不好的设计,可以传约定的数字,英文单词,只要意思过去了没必要非得传中文。
实在要传的话,用encodeURI进行两次编码,注意是重复编码两次

回答4:

中文的不能用utf-8吧,应该用GBK

回答5:

这个问题 我也遇到过 我是将数据再次转码了