UTF-8编码,部分中文正常,部分为乱码的问题?

lbllbl 2012-04-18 10:18:14
代码如下:

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'
部分中文能正常显示,而部分为乱码,这是怎么回事?
...全文
7807 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-04-20
  • 打赏
  • 举报
回复
少见。
lbllbl 2012-04-20
  • 打赏
  • 举报
回复
自已顶一次,希望有人能解答
lbllbl 2012-04-18
  • 打赏
  • 举报
回复
不是从数据查出来的数据,是插入失败后捕获的异常
GBK与GB2312没试过,如果就把程序文本的编码方式改一下,再加上代码改一下:System.out.println(new String(e.toString().getBytes("iso-8859-1"),"GBK"));
的话,这倒是顺便试过,全是乱码。
ylovep 2012-04-18
  • 打赏
  • 举报
回复
既然是从数据库查出来的数据 必定原因出在数据库编码上
FOR_US 2012-04-18
  • 打赏
  • 举报
回复
GBK
FOR_US 2012-04-18
  • 打赏
  • 举报
回复
试试GB2312
lbllbl 2012-04-18
  • 打赏
  • 举报
回复
不转码的话全是乱码。
数据库,与代码的编码肯定都一致的。
有部分中文能正常显示,编码上应该是对的,问题是有一部分是乱码?真是无处下手。
---TankSoftware--- 2012-04-18
  • 打赏
  • 举报
回复
数据库与后天代码,客户端要一直的!
jackpay 2012-04-18
  • 打赏
  • 举报
回复
我也遇到了,而且有时乱码有时不乱码
fangkaifang 2012-04-18
  • 打赏
  • 举报
回复
你不转码试试呢
lbllbl 2012-04-18
  • 打赏
  • 举报
回复
最新进展:
1、无论用什么编码:GBK、GB2312、UTF-8 ,数据库的中文都是正常的,就是Java这边的编码与数据库对不上也会是正常的。这可能是mySQL驱动自己做了什么转换。
2、统一都用GBK、GB2312的啊,则没有上述问题,即抛的异常能正常显示中文
3、统一都用UTF-8就有上述问题,就是问题还没解决。
tommore 2012-04-18
  • 打赏
  • 举报
回复
编码与好多东西有关,比如:一般windows不会有系统编码的问题,但如果是linux/unix的话很可能有关系。第二就是eclipse中项目使用的编码是什么,右击你的项目-->properties-->resource-->text File encoding
dxqrr 2012-04-18
  • 打赏
  • 举报
回复
你用的什么数据库,在数据库中显示正常么
lbllbl 2012-04-18
  • 打赏
  • 举报
回复 1
谢谢大家的回答。我要问的是为什么部分中文正常,部中文乱码的问题,异常是我故意让主键重复产生的异常的。按理说编码错的话,那么所有中文显示都会不正常,怎么会是个别字正常?
鸡仔哥 2012-04-18
  • 打赏
  • 举报
回复
Duplicate entry 'ABCDEFG-中�?��?�??�??个传说' for key 'PRIMARY'
异常问题是你数据库的原因;

乱码方面,有可能与你的电脑或者你的编程工具本身的编码问题,导致现实有问题!
lbllbl 2012-04-18
  • 打赏
  • 举报
回复
1、这个异常是我故意让它抛出的
2、统一为utf-8编码,如果我正常插入的话,一切都正常。另外那个e.toString()出来的结果是一样的。
  • 打赏
  • 举报
回复
数据库编码 和你java的编码格式不一致,看起来像是 GBK--》UTF8 你的java 是gbk 数据库是UTF8
tommore 2012-04-18
  • 打赏
  • 举报
回复
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的话,你就不用转换。还有就是数据库用的是什么编码。
shangyangi 2012-04-18
  • 打赏
  • 举报
回复
用过滤器过滤一下……

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧