jsp页面用的是 contentType="text/html; charset=gb2312"
mysql连接用的 DBURL = "jdbc:mysql://localhost:3306/hrsystem?user= &password= &" +
"useUnicode=true&characterEncoding=gb2312";
mysql安装时采用的是gb2312编码,在创建数据库 的时候我又加了ENGINE=MyISAM DEFAULT CHARSET=gb2312serlvet 用的 response.setCharacterEncoding("gb2312");
myeclipse编码 改成了GBK
还是有乱码我是不是还应该将 servlet中的 String em_visage = request.getParameter("em_visage");这种接收参数的语句再加上编码转换,用那个什么 String em_visage = new String((request.getParameter("em_visage").getBytes("ISO8859-1"),"GB2312"); 不过我怎么都感觉没这个必要了!!
mysql连接用的 DBURL = "jdbc:mysql://localhost:3306/hrsystem?user= &password= &" +
"useUnicode=true&characterEncoding=gb2312";
mysql安装时采用的是gb2312编码,在创建数据库 的时候我又加了ENGINE=MyISAM DEFAULT CHARSET=gb2312serlvet 用的 response.setCharacterEncoding("gb2312");
myeclipse编码 改成了GBK
还是有乱码我是不是还应该将 servlet中的 String em_visage = request.getParameter("em_visage");这种接收参数的语句再加上编码转换,用那个什么 String em_visage = new String((request.getParameter("em_visage").getBytes("ISO8859-1"),"GB2312"); 不过我怎么都感觉没这个必要了!!
response.setContentType("text/html;charset=gb2312");这两个语句要在获取表单值之前设置。
contentType="text/html; charset=utf-8"我都是这么做的没有乱码的问题!!!!!
String em_visage = new String((request.getParameter("em_visage").getBytes("ISO-8859-1"),"GB2312");
post传递的话用response.setCharacterEncoding("gb2312");
就可以 了能用post就用post
contentType="text/html; charset=utf-8"如果已经安装好了,从数据库客户端查看一下其编码方式,重新设置修改,具体的修改:
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+查看如果不是utf8的可以如下修改:修改数据库的字符集
mysql>use mydb
mysql>alter database mydb character set utf-8;
创建数据库指定数据库的字符集
mysql>create database mydb character set utf-8;通过配置文件修改:
修改/var/lib/mysql/mydb/db.opt
default-character-set=latin1
default-collation=latin1_swedish_ci
为
default-character-set=utf8
default-collation=utf8_general_ci
重起MySQL:
[root@bogon ~]# /etc/rc.d/init.d/mysql restart通过MySQL命令行修改:
mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_system=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_connection=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_database=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_server=utf8;
Query OK, 0 rows affected (0.01 sec)
查看:
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.03 sec)
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.04 sec)
这样就OK了。
//servlet中
request.setCharacterEncoding("gb2312");
//如果数据库用的UTF-8编号那么
response.setCharacterEncoding("utf-8");//然后你可以System.out.println();检验一下到底是哪一步出现乱码!!
http://blog.csdn.net/crazylaa/archive/2009/12/24/5066784.aspx
除了综上所说的办法
1你可以设置下 mysql安装目录下有个配置文件里面的 编码格式 文件名叫什么我忘了 google一下就可以找到
2 如果你用的是tomcat 加上 URIencodeing=“UTF-8”
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;
public class EncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// Select and set (if needed) the character encoding to be used
String encoding = selectEncoding(request);
if (encoding != null) {
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);
}
// Pass control on to the next filter
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
(1)response.setContentType("text/html;charset=gbk");
(2)过滤器:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;
public class EncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// Select and set (if needed) the character encoding to be used
String encoding = selectEncoding(request);
if (encoding != null) {
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);
}
// Pass control on to the next filter
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}