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

DJMPH 2002-12-13 03:33:16
我在做一个录入页面的时候使用了如下代码:
......
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,然后提出来的时候再转换为汉字。这样的缺点在于我数据库里面看到的将不是汉字了,对于数据维护极端不便。

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

顺便说一下,我对读取数据库中的中文是没有问题的。
...全文
54 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Remus 2002-12-13
  • 打赏
  • 举报
回复
往数据库里存的时候,转换一下:query=new String(query.getBytes("gb2312"),"iso8859-1")就行了。我就是这样用的,但我不是用的PreparedStatement.不知道对你的问题能行不,你试试吧。:)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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