在实现数据库操作时,对于汉子信息,有时不能正确处理,其原因是由于汉字编码的不同所造成的。为了正确处理汉字信息,必须使用汉字编码使用同一的编码格式。汉字编码目前主要使用UTF-8和GB2313。
在设计web应用程序时,涉及汉字信息编码的组件有:
(1)数据库和数据表建立时,所建立的数据库和数据表及其各字段的编码格式。
(2)对数据库中记录的读写访问采用的编码格式。
(3)在JSP页面之间传递参数(request对象)时,返回到客户端的信息编码格式。
(4)在JSP页面(HTML页面)中的汉字编码格式。
(5)由服务器响应(response),返回到客户端的信息编码格式
在所涉及应用程序时,需要将这几部分的编码格式统一为一种汉字的编码格式,就可以解决汉字乱码问题。为此,可以采用以下的解决方案:
第一,建立数据库,数据表是指定数据编码.
1)建立数据库的时候要用到UTF-8编码:
CREATE DATABASE 数据库名字 default charset=utf-8
2)建立数据表时也用到utf-8编码:
CREATE TABLE 数据表名字(各字段及其类型定义)default charset=utf-8;
第二,在连接数据库时,指定数据库读写的编码,
例如,连接MySQL数据库时,声明采用UTF-8编码:
Class forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost/demo?user=用户名&password=密码&useUnicode=ture&characterEncoding=UTF-8";
第三,在含有JSp提交表单的页面,设置method=“post”,并在接受所提交信息的页面或Serlvet程序中,通过request请求对象的request.setCharacterEncoding(“UTF-8”)方法设置编码格式。