首先说明几点:
在文件中任何时候出现utf-8、UTF-8、utf8、UTF8其作用都是一样的。tomcat、resin、mysql可没有我们这么笨。网上许多文章还煞有介事的特别指出其一个个的区别,纯属无稽之谈。
我的软件环境:
中文WINDOWS XP (linux可作相应修改)
Apache Tomcat 5.5.6 Server
phpMyAdmin 2.6.4-pl4
MySQL 5.0.19-nt
按下面步骤修改: 一、在JSP静态文件中正确显示UTF-8:
1、JSP文件用支持UTF-8的文字编辑器编辑,如EditPlus、UltraEdit,并把原来ascii转换成utf-8(菜单里有)。
2、JSP文件头改成:
<%@ page c language="java" import="java.sql.*"%>
有无这句无所谓(但在.html文件中是必要的):
<head>
<meta http-equiv="content-type" c />
</head> 二、FORM的正确提交:
1、getParameter之前加入:
request.setCharacterEncoding("utf-8");
这一步也可以用Filter的办法,参见其它文章。
2、request时,只需要写成最简单的形式:
String name1= new String(request.getParameter("username"));
String pwd1= new String(request.getParameter("password")); 三、连接mysql:
1、mysql配置文件:
修改mysql在windows\my.ini里default-character-set=utf-8
2、mysql里数据库和表也都设为utf8_unicode_ci
3、数据库连结:jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8
注意,关键就在于此:此句中间是'&'不是'&'在www.Jdon.com的banq和许多牛人的文章中都写成了'&'。这可能是发文章时html自动转化的。但这的确给我们带来了很大的麻烦。会产生如下错误或问号:
java.sql.SQLException: Syntax error or access violation, message from server: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''asdf' at line 1"