将韩文字符存储在 MySQL 中
Store Korean characters in MySQL
我有一个表格,但每次我提交韩文字符时,它在我的 phpmyadmin 数据库中显示为问号或非常复杂。我希望能够使用拉丁字符和亚洲字符在我的 MySQL 数据库 table 中提交条目,我也在 Eclipse 中使用 java。
我已经完成了以下操作:
在我的 jsp
文件中添加了这个
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
修改了我的 server.xml
文件中的连接器标签,使其具有
URIEncoding="UTF-8"
已修改 URL 连接
conn = DriverManager.getConnection("jdbc:mysql://localhost/login?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8",
"root", "");
添加这是在我处理表单数据的 Servlet 中的 doPost 方法中
response.setContentType("text/html; charset=UTF-8");
以及下面的截图。非常感谢您的帮助。
我建议您排除数据库以外的所有因素,以确保问题确实出在数据库上。首先检查十六进制值:
SELECT HEX(column_name) FROM table_name
如果您在看到“?”的地方看到“3F”,则很可能是来自您的 Web 应用程序的数据有问题(更多帮助 here in section A.11.2 例如使用 SET NAMES
和更改 MySQL INI 文件)。您还应该尝试手动将十六进制插入数据库 table 并以正常方式和十六进制方式选择它以确保数据正确进出。
如果您仍然怀疑数据库有问题,请确保您的 table 正在正确编码字符集(即 DEFAULT CHARSET),例如(或 other examples):
SHOW CREATE TABLE table_name
尝试使用 utf8/utf8mb4 时,如果您看到 问号 (普通问号,不是黑色菱形),
- 要存储的字节未编码为utf8。解决这个问题。
- 数据库中的列是
CHARACTER SET utf8
(或utf8mb4)。解决这个问题。
- 另外,检查读取时的连接是否为utf8
尝试使用 utf8/utf8mb4 时,如果您看到 Black Diamonds 带有问号,
存在以下情况之一:
案例 1(原始字节 不是 utf8):
- 要存储的字节未编码为utf8。解决这个问题。
INSERT
和 SELECT
的连接(或 SET NAMES
)不是 utf8/utf8mb4。解决这个问题。
- 此外,检查数据库中的列是否为
CHARACTER SET utf8
(或 utf8mb4)。
情况 2(原始字节 是 utf8):
SELECT
的连接(或 SET NAMES
)不是 utf8/utf8mb4。解决这个问题。
- 此外,检查数据库中的列是否为
CHARACTER SET utf8
(或 utf8mb4)。
仅当浏览器设置为 <meta charset=UTF-8>
时才会出现黑色菱形
注:euckr与utf8不一样。可以处理,但需要不同的步骤。
我有一个表格,但每次我提交韩文字符时,它在我的 phpmyadmin 数据库中显示为问号或非常复杂。我希望能够使用拉丁字符和亚洲字符在我的 MySQL 数据库 table 中提交条目,我也在 Eclipse 中使用 java。
我已经完成了以下操作:
在我的
jsp
文件中添加了这个contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
修改了我的
server.xml
文件中的连接器标签,使其具有URIEncoding="UTF-8"
已修改 URL 连接
conn = DriverManager.getConnection("jdbc:mysql://localhost/login?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8", "root", "");
添加这是在我处理表单数据的 Servlet 中的 doPost 方法中
response.setContentType("text/html; charset=UTF-8");
以及下面的截图。非常感谢您的帮助。
我建议您排除数据库以外的所有因素,以确保问题确实出在数据库上。首先检查十六进制值:
SELECT HEX(column_name) FROM table_name
如果您在看到“?”的地方看到“3F”,则很可能是来自您的 Web 应用程序的数据有问题(更多帮助 here in section A.11.2 例如使用 SET NAMES
和更改 MySQL INI 文件)。您还应该尝试手动将十六进制插入数据库 table 并以正常方式和十六进制方式选择它以确保数据正确进出。
如果您仍然怀疑数据库有问题,请确保您的 table 正在正确编码字符集(即 DEFAULT CHARSET),例如(或 other examples):
SHOW CREATE TABLE table_name
尝试使用 utf8/utf8mb4 时,如果您看到 问号 (普通问号,不是黑色菱形),
- 要存储的字节未编码为utf8。解决这个问题。
- 数据库中的列是
CHARACTER SET utf8
(或utf8mb4)。解决这个问题。 - 另外,检查读取时的连接是否为utf8
尝试使用 utf8/utf8mb4 时,如果您看到 Black Diamonds 带有问号, 存在以下情况之一:
案例 1(原始字节 不是 utf8):
- 要存储的字节未编码为utf8。解决这个问题。
INSERT
和SELECT
的连接(或SET NAMES
)不是 utf8/utf8mb4。解决这个问题。- 此外,检查数据库中的列是否为
CHARACTER SET utf8
(或 utf8mb4)。
情况 2(原始字节 是 utf8):
SELECT
的连接(或SET NAMES
)不是 utf8/utf8mb4。解决这个问题。- 此外,检查数据库中的列是否为
CHARACTER SET utf8
(或 utf8mb4)。
仅当浏览器设置为 <meta charset=UTF-8>
注:euckr与utf8不一样。可以处理,但需要不同的步骤。