gpt4 book ai didi

java - 通过java程序将挪威字母插入SQLite数据库

转载 作者:行者123 更新时间:2023-12-01 12:20:41 25 4
gpt4 key购买 nike

我正在尝试用我的 java 程序中的数据填充 SQLite 数据库。

数据是使用 Apache POI 从 Excel 文件中读取的。我使用正常方法将数据插入数据库没有任何问题。但是,当我使用 shell 手动检查数据库时,所有挪威语字符 æ,ø,å 都无法正确显示。每当我通过 shell 手动填写数据库时,它们都会按预期显示。此外,当在控制台中打印出包含这些字符的 java 字符串时,它们会正确显示。

当执行这样的操作时,一定会出现问题:

String sql = "insert into db(name) values (æøå)";
stmt.executeUpdate(sql);

我已经尝试过

byte[] b = sql.getBytes("utf-8");
sql = new String(b, "utf-8");

没有效果。

知道如何补救这种情况吗?谢谢!

最佳答案

有一个非常简单的解决方案适合您:让 Java 和 SQLite 驱动程序为您做所有事情。您不必关心参数的编码和转义。

这是如何实现的:使用PreparedStatement:

String name = "æøå"
PreparedStatement prepStmt = conn.prepareStatement("insert into db(name) values (?)");
prepStmt.setString(1, name);
prepStmt.executeUpdate();

此外,此代码片段可以抵御 SQL 注入(inject)攻击。

顺便说一句:您发布的第二个代码片段完全没用,它什么也没做。将字符串转换为 byte[] 并返回字符串不会更改字符串的任何一位。

关于java - 通过java程序将挪威字母插入SQLite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26680356/

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