当前页面: 开发资料首页 → JSP 专题 → 求MySql和Jsp的中文问题解答
求MySql和Jsp的中文问题解答
摘要: 求MySql和Jsp的中文问题解答
首先不要让我去google,找到的都是让我改成gbk或者gb2312什么的.
为了彻底解决中文问题,我所有编码都是utf8的,关于utf8的问题很少人谈到.
我mysql配置成了这样:
show variables like 'character_set%';
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
这样的时候在jsp中插入数据是?? ,在mysql的命令行运行同一条语句就正常显示.
然后
set names utf8;
show variables like 'character_set%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
这样之后命令行也插入不了,jsp插入还是?? 命令行报错是说数据太长,肯定是指类型不对.
听说jdbc driver也要进行一个字符转换才能写入,我没找到方法,请高手指教.
Mysql使用ISO方式储存字符,JSP使用GBK显示中文,所以需要在存入和取出的过程中即使你用utf8还是一样要转码
参考程序:
public String toGBK(String input) {
try {
byte[] bytes = input.getBytes("ISO8859-1");
return new String(bytes,"GBK");
}catch(Exception ex) {
}
return input;
}
//转码GBK转ISO
public String toISO(String input) {
try {
byte[] bytes = input.getBytes("GBK");
return new String(bytes,"ISO8859-1");
}catch(Exception ex) {
}
return input;
}
靠,原来是netBeans的编码是GBK的,我靠.一直以为它是UTF-8的.