当前位置:  技术问答>java相关

又是中文乱码问题,呵呵,不知道为什么又会出来烦我?

    来源: 互联网  发布时间:2017-03-21

    本文导语:  我在做一个录入页面的时候使用了如下代码: ...... sql="............"; PreparedStatement preStmt; preStmt = cn.prepareStatement(sql); ...... 这应该是标准的用法,当然是放在bean中的,继续。下面问题出来了。 1. 如果前面的sql="INSERT...

我在做一个录入页面的时候使用了如下代码:
......
sql="............";
PreparedStatement preStmt;
preStmt = cn.prepareStatement(sql);

......
这应该是标准的用法,当然是放在bean中的,继续。下面问题出来了。

1. 如果前面的sql="INSERT INTO Project(CustID,Code,Name) VALUES ( ?,?,? )";
preStmt.setString(1,"这里是中文");
preStmt.setString(2,"这里是中文");
preStmt.setString(3,"这里是中文");
preStmt.executeUpdate();
好了,现在看看数据库,结果"这里是中文"就都变成了"偬/-"了。

2. 现在我们把sql改了:sql="INSERT INTO Project(CustID,Code,Name) VALUES ( '这里是中文',?,'这里是中文' )";
preStmt.setString(1,"这里是中文");
preStmt.executeUpdate();
再看看结果,变成了: |这里是中文    偬/-    这里是中文|  了。

现在就是说,当中文通过PreparedStatement预处理以后就变成乱码了,那么setString()这个方法会造成乱码。现在我有两个选择,要么我不用PreparedStatement而用Statement自己组合sql语句执行。这样的困难是我要面对转换单引号,逗号等关键子。虽然处理上没有技术难度。 要么我仍然使用setString(),但在此之前转换我的汉字为Ascii,然后提出来的时候再转换为汉字。这样的缺点在于我数据库里面看到的将不是汉字了,对于数据维护极端不便。

我不知道高手们都是怎么做的?谢谢。

顺便说一下,我对读取数据库中的中文是没有问题的。

|
往数据库里存的时候,转换一下:query=new String(query.getBytes("gb2312"),"iso8859-1")就行了。我就是这样用的,但我不是用的PreparedStatement.不知道对你的问题能行不,你试试吧。:)

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3