是MYSQL的驱动有问题,好像是Statement和PreparedStatement不支持中文,需要修改驱动原码
解决方案 »
- 如何讓地址欄裏面的字母大小寫不影響程序的運行?
- jpa和spring的一个异常 谢谢了
- Java操作excel
- 关于dom4j 写入xml问题
- fileinputstream 的路径问题?
- 高手救救我吧 !!Coparator的问题
- 将请求重定向后,原页面程序进程还在继续,怎样跳出来?
- JSP社区中有类似phpMyAdmin操作MySQL的东东吗???
- 象棋 。。有人做过吗?
- 在局域网中我的网页得不到别人的ip,有代理服务器。
- 关于JSP调用javaBean的问题
- 奇怪:为什么取当前时间Util.getFormatDate("yyyy-MM-dd HH:mm")取出来的是格林威治时间?请问如何取出当前北京时间。
jdbc:mysql://127.0.0.1/mydatabase?useUnicode=true&characterEncoding=GBK这种形式吗?
2.将mysql的编码改成iso8859_1
3.将你的页面文件设置
<%@ page contentType="text/html; charset=iso8859_1"...或者全用GBK反正你要同一用一种编码。
jdbc:mysql://127.0.0.1/mydatabase?useUnicode=true&characterEncoding=GBK这种形式吗?系统只认:
jdbc:mysql://127.0.0.1/mydatabase?useUnicode=true&characterEncoding=8859-1
如果是GBK 或 GB2312都报 java.sql.SQLException: Syntax error or access violation message from server: "Unknown character set: 'gb2312'" 不认识字符集的错误!!!!
public static String UnicodeToChinese(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
如果数据库里面上正常的你就只用改<%@ page contentType="text/html; charset=GBK"...
还有个<meta ... 里面也改成GBK...
2.将mysql的编码改成iso8859_1
3.将你的页面文件设置
<%@ page contentType="text/html; charset=iso8859_1"...
或者全用GBK反正你要同一用一种编码。查询出来的结果是:£ºTŒ—õ当然可以啊,而且rs.getString也不用那么麻烦吧,用直接的返回值就可以了
不行的!!!我试过了!!!!!
mysql因为是瑞典人开发的,默认用的是latin1编码的
所以你在这种编码格式下插入的数据都会是乱码
建议:
先关闭mysql及使用了mysql的所有客户端程序
在安装目录下的my.ini中修改
[client]
default-character-set=gbk
[mysqld]
default-character-set=gbk
也就是在客户端和服务器端的字符编码都改为gbk(假设你用的是这种编码)
然后打开mysql,新建一个表并出入中文数据
这样就可以了
增加
[mysqld]
default-character-set=gbk
[mysqld]
default-character-set=gb2312
或者直接装个高版本的mysql. 安装时会让你选择编码,选gb2312就行了.
如果会!!!那这种方法就不可以用了 !!!!!
因为已存在的数据很重要!!!还有其他方法吗???
[mysqld]
default-character-set=gb2312
或者直接装个高版本的mysql. 安装时会让你选择编码,选gb2312就行了.UNIX下的也是一样的吗???
利用mysql的“拷贝sql语句到剪贴版”的功能
把数据库的所有数据都转换成sql语句,保存在一个txt文件里面(如果数据量大可以分成多个)
然后在新建立的数据库里面执行这些sql语句就行了嘛
2.检查mysql driver: mysql-connector-java-3.0.9-stable-bin.jar(ps:3.0.8的好像就不行)
3.建立库或者表时:
CREATE DATABASE new_db
CHARACTER SET 'gb2312'
COLLATE 'gb2312_chinese_ci';
'gb2312'在控制台下进入mysql:用show charset;来查看
4.连接时用
jdbc:mysql://127.0.0.1/mydatabase?useUnicode=true&characterEncoding=gb2312
你怎么操作的?
修改了mysql的默认编码后要注销一下再添数据的~
看看mysql系统信息mysql> show variables;
+---------------------------------+-------------------------------------+
| Variable_name | Value |
+---------------------------------+-------------------------------------+
| back_log | 50 |
| basedir | D:\MySQL Server 4.1\ |
| binlog_cache_size | 32768 |
| bulk_insert_buffer_size | 8388608 |
| character_set_client | latin1//注意 |
| character_set_connection | latin1//注意 |
| character_set_database | latin1//注意 |
| character_set_results | latin1//注意 |
| character_set_server | latin1//注意 |
| character_set_system | utf8 |
| character_sets_dir | D:\MySQL Server 4.1\share\charsets/ |
一般上面标识的几个地方设置为latin1,要经过一个转换函数getBytes("ISO8859-1","gb2312")
这样就能显示中文(jsp也要设置charset=gb2312)
设置的方法:(linux下编辑my.cnf文件,windows编辑my.ini文件)
[mysqld]
default-character-set=gb2312
就报:找不到gb2312字符集!一般上面标识的几个地方设置为latin1,要经过一个转换函数
这样就能显示中文(jsp也要设置charset=gb2312)
我这样转化了!但是不行啊!!!
我还getBytes("utf-8","gb2312")也试了!不行啊!!!不行啊!各位老大们!!!!!!!!!
我如果调用mysql for win版本就可以查询出汉字。
但是如果调用 for unix 版本就有问题!在unix 下看到的内容在汉字的地方就是:???
我的插入语句是这样写的:
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://192.168.0.211:3306/test?userUnicode=true&characterEncoding=ISO8859-1";
Connection conn = DriverManager.getConnection(url,"admin","12345678");
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql="insert into dw1 values('3','和韵');";
插入是成功的,从数据库中看到的汉字是???,查询出来的结果也是:???
救命啊!!!大侠!!!
http://blog.csdn.net/lvyuanfang/archive/2005/02/03/279498.aspx
我的blog上面有很多情况的说明。