我已经阅读了很多关于这个主题的主题,但每个人都指向数据库中的字符集。
我正在使用带有'ñ'等特殊字符的字符串,我无法在数据库中设置它们。正如您可能猜到的那样,字符会更改为“?”。
事情就是使用这个陈述,我明白了:
stmt = con.prepareStatement("INSERT INTO LONG_CODES_TABLE (TIMESTAMP, TABLE_NAME, CODE__C, CODE_DESC)
VALUES (GET_TIMESTAMP, 'MUNICIPIOS', '" + municipio + "', '" + municipio + "') ");
只是在同一个数据库和表中,没有改变任何东西,如果我使用以下内容我得到'?' DB中的字符:
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语句询问该值来检查在路上或其他方面之间的差异,例如:
select * from long_codes_table
where table_name = 'MUNICIPIOS' and code__c = 'ABADIÑO'
我得到结果行的一种方法。另一方面,我没有。
谢谢。
答案 0 :(得分:1)
我也有这种行为。最重要的是,我发现从IDE启动应用程序时没有发生此错误。这就是我在JVM中意识到 - 编码缺失的那个。
java %vm-opts% %clspth% -Dfile.encoding=UTF-8 ...