虽然解决不过还是有疑惑的地方
解决方案:
在安装目录下找到my.ini这个文件,将client和server的字符设置都改为gbk
这样就好了
用 SHOW VARIABLES LIKE 'character_set_%';命令查看字符设置 我的修改后为:
| character_set_client | gbk
|
| character_set_connection | gbk
|
| character_set_database | gbk
|
| character_set_filesystem | binary
|
| character_set_results | gbk
|
| character_set_server | gbk
|
| character_set_system | utf8
这样修改后 试验:
创建数据库 表:
create database java;
use java;
CREATE TABLE person
(
id varchar(20) not null primary key ,
name varchar(20) ,
password varchar(20)
) ;
INSERT INTO person VALUES ('helle','你好','zzzzzz') ;
commit;
登陆界面:;login.jsp:
验证界面:login_conf.jsp:
成功页面:login_success.jsp:
不过不明白的地方还是很多的:我只是修改了数据库中的编码 是用gbk来存了,可是在程序中我也没有写类似过滤器的代码,
以前我还在程序页面开头 加了:
<%
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
%>
发现把这两句都删了 在成功页面还是能取出中文字符的
不知道为何 ?
今天可能明白一点了,写下:
request.setCharacterEncoding("gb2312");是设置用户jsp界面向服务器提交中文时用的。
上面的之所以去掉没有什么变化是因为:我们没有从jsp中提交数据,我们只是从数据库中读取了数据,在mysql5.0中设置好了 编码gbk后 自动就会在连接url中添加设置编码为gbk
到目前 估计对这个编码问题理解的还好了一点 了吧