我在插入数据库之前对中文的字段进行了编码转换,即
String answerof25=new String(request.getParameter("problem25").getBytes("ISO8859-1"),"GB2312");然后out.print(answerof25);打出来的中文是正常的.但是插入成功后,再看,数据库中中文字段显示???是怎么回事呢?请高手指教!
String answerof25=new String(request.getParameter("problem25").getBytes("ISO8859-1"),"GB2312");然后out.print(answerof25);打出来的中文是正常的.但是插入成功后,再看,数据库中中文字段显示???是怎么回事呢?请高手指教!
默认mysql使用的是latin1字符集,改成gbk
在mysql的config wizard里改
版本5.0
String answerof25 = request.getParameter("problem25");如果还得服务端响应到页面上的话,还得加上response.setCharacterEncoding("gbk");或者建一个过滤器把 request 和 response 的编码改为 GBK,就用不着每个里面都去写了。至于存数据库:1,首先你得确保数据表采用的编码是 GBK
2,在 MySQL JDBC 的连接字符串后面加上 ?useUnicode=true&characterset=gbk如果你新建数据库默认的编码是 Latin-1 字符集的话,你可以更改默认的编码:1,打开 MySQL 的安装目录,打开 my.ini 文件
2,找到 [mysqld] 组,修改数据库服务器配置
3,找到 default-character-set 这个,把值改为 gbk,如果没有的话就加一行 default-character-set=gbk这样处理后,重启 MySQL 服务,以后新建的数据库默认都是 GBK 编码了,否则得在建库、
建表时指定编码,会很麻烦的。前面说到的在连接字符串后面加上 ?useUnicode=true&characterset=gbk 这个,也可以改 my.ini
实现的,就是改 [mysql] 组,加上 default-character-set=gbk 这句,不过不建议这样做,建议在
程序中控制,因为在程序中控制的话可以在任何一个 MySQL 上面使用。
1.连接数据库时的url中&characterEncoding=gb2312去掉,不用设置,使其使用默认编码格式;
2.将数据库中要插入中文的字段类型修改为binary
3.在从页面表单中取出的数据要插入到数据库中时,不要作任何编码转换,直接request.getParameter("参数名");这样就行.
4.而在你的jsp页面中
<%@ page contentType="text/html;charset=gb2312" %>这样写,
你所从数据库中取出的字段(有中文的),都用
new String("rs.getString("字段").getBytes("iso8859-1"),"gb2312");这样得到的在页面中显示的就是中文谢谢大家勇跃参加!