gpt4 book ai didi

java - 如何在数据库中保存特殊字符

转载 作者:行者123 更新时间:2023-11-29 12:25:39 26 4
gpt4 key购买 nike

我正在使用 MySQL 数据库并像这样插入:

  try (Connection connection = DbConnector.connectToDb();
PreparedStatement stm = connection.prepareStatement("INSERT INTO Country (name) VALUES (?)")) {
stm.setString(1, name);
if (stm.executeUpdate() > 0) {
result = true;
}
} catch (Exception e) {
logStackTrace(e);
}

现在,当我插入: België 时,它以一种奇怪的方式保存在数据库中,但 ë 并未保存。我该如何解决这个问题?

编辑:

我刚刚通过以下方式更改了表格:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

但是当我添加新的时,它仍然无法正确显示在网页上。

最佳答案

为了正确设置 UTF-8 字符集,数据库中有 2 个点需要检查。

数据库级别

这是通过创建它获得的:

CREATE DATABASE 'db' CHARACTER SET 'utf8';

表格级别

所有表格也需要采用 UTF-8 格式(您似乎就是这种情况)

CREATE TABLE  `Table1` (
[...]
) DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

重要的部分是DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci

最后,如果您的代码未正确处理 utf8,您可以通过在启动时更改设置来强制 JVM 使用 utf8 编码:

java -Dfile.encoding=UTF-8 [...]

或者更改环境变量

"**JAVA_TOOLS_OPTIONS**" to -Dfile.encoding="UTF-8"

或以编程方式使用:

System.setProperty("file.encoding" , "UTF-8");

(最后一个可能不会达到预期的效果,因为 JVM 在启动时缓存默认字符编码的值)

希望有所帮助。

关于java - 如何在数据库中保存特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28361561/

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