gpt4 book ai didi

Java PreparedStatement setString 改变字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:16 26 4
gpt4 key购买 nike

如标题所示:可以肯定的是,我正在调试我的应用程序,因此在我将字符串放入 PreparedStatement 变量的地方,特殊字符变为“?”。我实际上不知道在哪里搜索应该修复它的东西,所以我不知道是否需要代码..无论如何,我会在这里放一些:

PreparedStatement stm = null;
String sql = "";

try{
sql = "INSERT INTO methods (name, description) VALUES (?, ?)";
stm = connection.prepareStatement(sql);
stm.setString(1, method.getName());
stm.setString(2, method.getDescription());
//...
}catch(Exception e){}

虽然调试'name'字段在方法对象中是正确的,但是在将它添加到stm变量后,它改变了它的字符为'?'。

我在 SO 上找到了一个关于类似 sitoatuin 的主题,但是没有任何答案可以帮助我,因为我确切地知道将字符串添加到语句而不是数据库中是不正确的。但我不知道..

有什么建议吗?

附言。我使用的是 netbeans 6.7.1 版本

编辑:我正在使用标准的 netbeans 调试器进行调试,并在将字符串添加到“stm”变量之前检查变量的状态。我什至将 getName() 方法更改为带有特殊字符的静态字符串。因此可以肯定,方法类一切正常。

EDIT2:我又做了一个测试。检查 stm 变量,它的属性之一是“charEncoding”,它被设置为“cp1252”。所以主要问题是..如何改变它?

最佳答案

这通常由 using different charsets 发生在不同的位置。听起来您正在以 UTF-8 格式输入,将其转换为另一个聊天集(可能您的数据库设置为其他内容),这会破坏特殊字符。

解决这个问题:到处*使用相同的字符集。 (我建议使用 UTF-8)

*看看thismy answer to another thread (这是关于php的问题,但在java中几乎是一样的)

关于Java PreparedStatement setString 改变字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4724299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com