一、解决数据库存储和查询中的乱码问题:
1、数据库编码:
将数据库的编码设置成utf-8
在配置文件my.ini文件中设置
default-character-set=utf8
曾经试着设置DB的编码为GB2312,但是发现在这种编码下,部分生僻汉字(如:傑陞喆璟鹍珺玘愔旻菓)无法用LOAD DATA INFILE导入DB,但是换成UTF-8就好了。
二、解决JSP文件中的中文传到浏览器上会变成乱码的问题:
1、把保存JSP文件字符集改成UTF-8
Eclipse-->Project-->Properties-->Info-->Default encoding for text file.
将保存jsp文件的字符集改成UTF-8
设置单个文件的字符集,也可以在目标文件的右键菜单中选择Properties-->Info-->Text file encoding
设置Eclipse的默认字符集:Window-->preference-->Workbench-->Editors-->Text file encoding
2、设置JSP文件的字符集为UTF-8
<%@page contentType="text/html;charset=utf-8" %>
这样可以看到JSP文件翻译成的servlet文件中的中文为乱码,但是不用担心,最终被送到浏览器的文字不是乱码。
3、设置网页的字符集为UTF-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
注:如果设置页面的字符集为gb2312,浏览器可能会忽略这个信息,而是根据实际情况,自动将字符集选择为utf-8,从而不出现乱码。但是最好是给浏览器一个正确的提示,因此此处最好是设置charset=utf-8。
三、解决通过form提交的数据中的乱码
1、通过form提交的数据通常是ISO-8859-1编码的(不知道浏览器上有没有相关设置),因此jsp在从request中获取信息之后要进行内码转换。
String tmp = request.getParameter("sql");
String sqlcmd;
if ( tmp != null ){
sqlcmd = new String(tmp.getBytes("ISO-8859-1"),"UTF-8");
}
else{
sqlcmd = "";
}