try
{
PreparedStatement preStmt = con.prepareStatement("insert into t_bb(f_no,f_name) values(?,?)");
preStmt.setString(1,"ABCDEFG");
preStmt.setString(2,"中国从前有个传说");
preStmt.executeUpdate();
}
catch(SQLException e)
{
System.out.println(new String(e.toString().getBytes("iso-8859-1"),"utf-8"));
}
执行插入数据失败后,提示如下:
Duplicate entry 'ABCDEFG-中�?��?�??�??个传说' for key 'PRIMARY'
部分中文能正常显示,而部分为乱码,这是怎么回事?
21 个解决方案
#1
你不转码试试呢
#2
我也遇到了,而且有时乱码有时不乱码
#3
数据库与后天代码,客户端要一直的!
#4
不转码的话全是乱码。
数据库,与代码的编码肯定都一致的。
有部分中文能正常显示,编码上应该是对的,问题是有一部分是乱码?真是无处下手。
数据库,与代码的编码肯定都一致的。
有部分中文能正常显示,编码上应该是对的,问题是有一部分是乱码?真是无处下手。
#5
试试GB2312
#6
GBK
#7
既然是从数据库查出来的数据 必定原因出在数据库编码上
#8
不是从数据查出来的数据,是插入失败后捕获的异常
GBK与GB2312没试过,如果就把程序文本的编码方式改一下,再加上代码改一下:System.out.println(new String(e.toString().getBytes("iso-8859-1"),"GBK"));
的话,这倒是顺便试过,全是乱码。
GBK与GB2312没试过,如果就把程序文本的编码方式改一下,再加上代码改一下:System.out.println(new String(e.toString().getBytes("iso-8859-1"),"GBK"));
的话,这倒是顺便试过,全是乱码。
#9
用过滤器过滤一下……
#10
Duplicate entry 'ABCDEFG-中�?��?�??�??个传说' for key 'PRIMARY'
1、你的主键重复了。
2、你看一下数据库的编码是什么,一般不转换就可以的。
System.out.println(new String(e.toString().getBytes("iso-8859-1"),"utf-8"));
你改为
System.out.println(new String(e.getBytes("iso-8859-1"),"utf-8"));
我感觉你不用转换编码,如果你项目用的就是utf8的话,你就不用转换。还有就是数据库用的是什么编码。
1、你的主键重复了。
2、你看一下数据库的编码是什么,一般不转换就可以的。
System.out.println(new String(e.toString().getBytes("iso-8859-1"),"utf-8"));
你改为
System.out.println(new String(e.getBytes("iso-8859-1"),"utf-8"));
我感觉你不用转换编码,如果你项目用的就是utf8的话,你就不用转换。还有就是数据库用的是什么编码。
#11
数据库编码 和你java的编码格式不一致,看起来像是 GBK--》UTF8 你的java 是gbk 数据库是UTF8
#12
1、这个异常是我故意让它抛出的
2、统一为utf-8编码,如果我正常插入的话,一切都正常。另外那个e.toString()出来的结果是一样的。
2、统一为utf-8编码,如果我正常插入的话,一切都正常。另外那个e.toString()出来的结果是一样的。
#13
Duplicate entry 'ABCDEFG-中�?��?�??�??个传说' for key 'PRIMARY'
异常问题是你数据库的原因;
乱码方面,有可能与你的电脑或者你的编程工具本身的编码问题,导致现实有问题!
异常问题是你数据库的原因;
乱码方面,有可能与你的电脑或者你的编程工具本身的编码问题,导致现实有问题!
#14
谢谢大家的回答。我要问的是为什么部分中文正常,部中文乱码的问题,异常是我故意让主键重复产生的异常的。按理说编码错的话,那么所有中文显示都会不正常,怎么会是个别字正常?
#15
你用的什么数据库,在数据库中显示正常么
#16
编码与好多东西有关,比如:一般windows不会有系统编码的问题,但如果是linux/unix的话很可能有关系。第二就是eclipse中项目使用的编码是什么,右击你的项目-->properties-->resource-->text File encoding
#17
#18
最新进展:
1、无论用什么编码:GBK、GB2312、UTF-8 ,数据库的中文都是正常的,就是Java这边的编码与数据库对不上也会是正常的。这可能是mySQL驱动自己做了什么转换。
2、统一都用GBK、GB2312的啊,则没有上述问题,即抛的异常能正常显示中文
3、统一都用UTF-8就有上述问题,就是问题还没解决。
1、无论用什么编码:GBK、GB2312、UTF-8 ,数据库的中文都是正常的,就是Java这边的编码与数据库对不上也会是正常的。这可能是mySQL驱动自己做了什么转换。
2、统一都用GBK、GB2312的啊,则没有上述问题,即抛的异常能正常显示中文
3、统一都用UTF-8就有上述问题,就是问题还没解决。
#19
自已顶一次,希望有人能解答
#20
少见。
#21
#1
你不转码试试呢
#2
我也遇到了,而且有时乱码有时不乱码
#3
数据库与后天代码,客户端要一直的!
#4
不转码的话全是乱码。
数据库,与代码的编码肯定都一致的。
有部分中文能正常显示,编码上应该是对的,问题是有一部分是乱码?真是无处下手。
数据库,与代码的编码肯定都一致的。
有部分中文能正常显示,编码上应该是对的,问题是有一部分是乱码?真是无处下手。
#5
试试GB2312
#6
GBK
#7
既然是从数据库查出来的数据 必定原因出在数据库编码上
#8
不是从数据查出来的数据,是插入失败后捕获的异常
GBK与GB2312没试过,如果就把程序文本的编码方式改一下,再加上代码改一下:System.out.println(new String(e.toString().getBytes("iso-8859-1"),"GBK"));
的话,这倒是顺便试过,全是乱码。
GBK与GB2312没试过,如果就把程序文本的编码方式改一下,再加上代码改一下:System.out.println(new String(e.toString().getBytes("iso-8859-1"),"GBK"));
的话,这倒是顺便试过,全是乱码。
#9
用过滤器过滤一下……
#10
Duplicate entry 'ABCDEFG-中�?��?�??�??个传说' for key 'PRIMARY'
1、你的主键重复了。
2、你看一下数据库的编码是什么,一般不转换就可以的。
System.out.println(new String(e.toString().getBytes("iso-8859-1"),"utf-8"));
你改为
System.out.println(new String(e.getBytes("iso-8859-1"),"utf-8"));
我感觉你不用转换编码,如果你项目用的就是utf8的话,你就不用转换。还有就是数据库用的是什么编码。
1、你的主键重复了。
2、你看一下数据库的编码是什么,一般不转换就可以的。
System.out.println(new String(e.toString().getBytes("iso-8859-1"),"utf-8"));
你改为
System.out.println(new String(e.getBytes("iso-8859-1"),"utf-8"));
我感觉你不用转换编码,如果你项目用的就是utf8的话,你就不用转换。还有就是数据库用的是什么编码。
#11
数据库编码 和你java的编码格式不一致,看起来像是 GBK--》UTF8 你的java 是gbk 数据库是UTF8
#12
1、这个异常是我故意让它抛出的
2、统一为utf-8编码,如果我正常插入的话,一切都正常。另外那个e.toString()出来的结果是一样的。
2、统一为utf-8编码,如果我正常插入的话,一切都正常。另外那个e.toString()出来的结果是一样的。
#13
Duplicate entry 'ABCDEFG-中�?��?�??�??个传说' for key 'PRIMARY'
异常问题是你数据库的原因;
乱码方面,有可能与你的电脑或者你的编程工具本身的编码问题,导致现实有问题!
异常问题是你数据库的原因;
乱码方面,有可能与你的电脑或者你的编程工具本身的编码问题,导致现实有问题!
#14
谢谢大家的回答。我要问的是为什么部分中文正常,部中文乱码的问题,异常是我故意让主键重复产生的异常的。按理说编码错的话,那么所有中文显示都会不正常,怎么会是个别字正常?
#15
你用的什么数据库,在数据库中显示正常么
#16
编码与好多东西有关,比如:一般windows不会有系统编码的问题,但如果是linux/unix的话很可能有关系。第二就是eclipse中项目使用的编码是什么,右击你的项目-->properties-->resource-->text File encoding
#17
#18
最新进展:
1、无论用什么编码:GBK、GB2312、UTF-8 ,数据库的中文都是正常的,就是Java这边的编码与数据库对不上也会是正常的。这可能是mySQL驱动自己做了什么转换。
2、统一都用GBK、GB2312的啊,则没有上述问题,即抛的异常能正常显示中文
3、统一都用UTF-8就有上述问题,就是问题还没解决。
1、无论用什么编码:GBK、GB2312、UTF-8 ,数据库的中文都是正常的,就是Java这边的编码与数据库对不上也会是正常的。这可能是mySQL驱动自己做了什么转换。
2、统一都用GBK、GB2312的啊,则没有上述问题,即抛的异常能正常显示中文
3、统一都用UTF-8就有上述问题,就是问题还没解决。
#19
自已顶一次,希望有人能解答
#20
少见。