最近修改一个BS项目遇到一个很奇怪的读取中文的问题。请各位帮忙看看应该如何解决?原有项目是通过php 写入中文数据到mysql 5版本中。通过php的程序显示网页也一切正常。数据库建立指定了utf-8 。表单建立也指定了utf-8(DEFAULT CHARSET=utf8;)。这些都已经确认。
原始文本串内容是:“测试发布者 - flash版位1”。
然后我安装navicat 进行客户端查看数据。这个时候有2种情况。
1。如果我在navicat的连接里面指定是 使用 65001 (UTF-8) 连接字符串。并且取消选择use mysql character set 选项。数据显示是中文:“测试发布者 - flash版位1”。正常。
2。如果我在navicat的连接里面选择use mysql character set 选项。这个时候数据显示不正常。字符串内容变为:“测试发布者 - flash版位1”。不正常。然后,我写一个jsp程序(JDK 5,mysql驱动5.04版本),通过hibernate(hibernate3)进行PO方式连接。在hibernate里面配置的连接URL是:jdbc:mysql://127.0.0.1/max?useUnicode=true&characterEncoding=UTF-8。
jsp本身是utf-8编码。加上了<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 和 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 语句。
这个jsp程序不写数据库。仅仅需要把这个字段内容读取出来。现在出现了这种情况。
1。如果我把内容直接打印出来,通过在浏览器上显示的是字符串是"测试发布者 - flash版位1".和上面通过client未指定utf-8连接显示的一样的乱码。
2。如果我对结果字符串进行new String(string.getBytes("latin1"),"UTF-8"));处理,显示成:“�?�?�?�?�?? - flash�??位1'”。
3。如果我对结果字符串进行new String(string.getBytes("UTF-8"),"UTF-8"));处理,显示成'测试发布者 - flash版位1'”。和上面通过client未指定utf-8连接显示的一样的乱码。
现在的调试的过程以及产生的结果初步分析下来看。
好像是 这个jsp使用的连接种utf-8的连接方式并没有产生作用。
请教各位,这种情况是否遇到过。应该如何解决?有正确思路和方案的,一定重分酬谢!!
原始文本串内容是:“测试发布者 - flash版位1”。
然后我安装navicat 进行客户端查看数据。这个时候有2种情况。
1。如果我在navicat的连接里面指定是 使用 65001 (UTF-8) 连接字符串。并且取消选择use mysql character set 选项。数据显示是中文:“测试发布者 - flash版位1”。正常。
2。如果我在navicat的连接里面选择use mysql character set 选项。这个时候数据显示不正常。字符串内容变为:“测试发布者 - flash版位1”。不正常。然后,我写一个jsp程序(JDK 5,mysql驱动5.04版本),通过hibernate(hibernate3)进行PO方式连接。在hibernate里面配置的连接URL是:jdbc:mysql://127.0.0.1/max?useUnicode=true&characterEncoding=UTF-8。
jsp本身是utf-8编码。加上了<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 和 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 语句。
这个jsp程序不写数据库。仅仅需要把这个字段内容读取出来。现在出现了这种情况。
1。如果我把内容直接打印出来,通过在浏览器上显示的是字符串是"测试发布者 - flash版位1".和上面通过client未指定utf-8连接显示的一样的乱码。
2。如果我对结果字符串进行new String(string.getBytes("latin1"),"UTF-8"));处理,显示成:“�?�?�?�?�?? - flash�??位1'”。
3。如果我对结果字符串进行new String(string.getBytes("UTF-8"),"UTF-8"));处理,显示成'测试发布者 - flash版位1'”。和上面通过client未指定utf-8连接显示的一样的乱码。
现在的调试的过程以及产生的结果初步分析下来看。
好像是 这个jsp使用的连接种utf-8的连接方式并没有产生作用。
请教各位,这种情况是否遇到过。应该如何解决?有正确思路和方案的,一定重分酬谢!!
页面中文:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
编码中文:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
提交时候 中文编码
<%
request.setCharacterEncoding("GB2312");
%>
2.数据库连接问题
(1) 这里特指连接MYSQL数据库的问题
<%
//for mysql
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection conn=java.sql.DriverManager.getConnection("jdbc:mysql://127.0.0.1/mysql?user=test&password=&useUnicode=true&characterEncoding=utf8");
Statement stmt=conn.createStatement();
%>