如何在数据库中保存特殊字符
How to save special characters in database
我正在使用 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ë 它以一种奇怪的方式保存在数据库中时,ë 没有保存。我该如何解决?
编辑:
我刚刚通过以下方式更改了 table:
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';
Table 等级
所有表格也都需要使用 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在启动时会缓存默认字符编码的值,最后这个可能达不到预期的效果)
希望对您有所帮助。
我正在使用 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ë 它以一种奇怪的方式保存在数据库中时,ë 没有保存。我该如何解决?
编辑:
我刚刚通过以下方式更改了 table:
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';
Table 等级
所有表格也都需要使用 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在启动时会缓存默认字符编码的值,最后这个可能达不到预期的效果)
希望对您有所帮助。