gpt4 book ai didi

java - 特殊字符和 preparedStatement 的问题,仅当我使用 setString 时

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:36 25 4
gpt4 key购买 nike

我读过很多关于这个主题的帖子,但每个人都指向数据库中的字符集。

我正在使用带有“ñ”等特殊字符的字符串,但无法在数据库中正确设置它们。正如您可能猜到的,字符已更改为“?”。

问题是,使用这个声明,我明白了:

stmt = con.prepareStatement("INSERT INTO LONG_CODES_TABLE (TIMESTAMP, TABLE_NAME, CODE__C, CODE_DESC) 
VALUES (GET_TIMESTAMP, 'MUNICIPIOS', '" + municipio + "', '" + municipio + "') ");

就在同一个数据库和表中,不做任何更改,如果我使用以下内容,我会得到“?”数据库中的字符:

stmt = con.prepareStatement("INSERT INTO LONG_CODES_TABLE (TIMESTAMP, TABLE_NAME, CODE__C, CODE_DESC) 
VALUES (GET_TIMESTAMP, 'MUNICIPIOS', ?, ?) ");

stmt.setString(1, municipio);

stmt.setString(2, municipio);

因此,仅当我使用 setString 时才会发生字符问题。有什么想法吗?

编辑:“municipio”变量的值是,例如:“ABADIÑO”。稍后,我可以通过使用 sql 语句询问该值来检查 on way 或 other 之间的差异,例如:

select * from long_codes_table 
where table_name = 'MUNICIPIOS' and code__c = 'ABADIÑO'

获取结果行的一种方法。另一方面,我不这样做。

谢谢。

最佳答案

我也有这样的行为。最重要的是,我观察到从 IDE 启动应用程序时不会发生此错误。这就是我如何意识到在 JVM 属性中缺少编码属性的原因。

java %vm-opts% %clspth% -Dfile.encoding=UTF-8 ...

关于java - 特殊字符和 preparedStatement 的问题,仅当我使用 setString 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6924242/

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