在MySQL中存储韩文字符

时间:2016-06-29 22:04:27

标签: java mysql utf-8 phpmyadmin

我有一个表单,但每次我提交韩文字符时,它都会在我的phpmyadmin数据库中显示为问号或者非常错综复杂。我希望能够使用拉丁语和亚洲字符在我的MySQL数据库表中提交条目,我也在Eclipse中使用java。

我已经完成了以下工作:

  • 在我的jsp个文件

    中添加了此内容

    contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"

  • 修改了server.xml文件中的连接器标记 URIEncoding="UTF-8"

  • 修改了连接的网址

    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");

以及以下截图。非常感谢您提供任何帮助。

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:3)

当尝试使用utf8 / utf8mb4时,如果您看到问号(常规问号,而不是黑色钻石),

  • 要存储的字节不编码为utf8。解决这个问题。
  • 数据库中的列为CHARACTER SET utf8(或utf8mb4)。解决这个问题。
  • 另外,检查读取期间的连接是否为utf8。

尝试使用utf8 / utf8mb4时,如果您看到带有问号的黑钻石, 其中一种情况存在:

案例1(原始字节 utf8):

  • 要存储的字节不编码为utf8。解决这个问题。
  • SET NAMES INSERT的连接(或SELECT)不是utf8 / utf8mb4。解决这个问题。
  • 另外,检查数据库中的列是CHARACTER SET utf8(或utf8mb4)。

案例2(原始字节 utf8):

  • SET NAMES的连接(或SELECT)不是utf8 / utf8mb4。解决这个问题。
  • 另外,检查数据库中的列是CHARACTER SET utf8(或utf8mb4)。

只有在浏览器设置为<meta charset=UTF-8>

时才会出现黑钻石

注意: euckr 与utf8不同。它可以处理,但需要不同的步骤。

答案 1 :(得分:2)

我建议你把除数据库之外的所有东西都拿出来,以确保问题确实存在于数据库中。首先检查十六进制值:

SELECT HEX(column_name) FROM table_name

如果你看到“3F”,你看到“?”,那么来自你的网络应用程序的数据很可能出现问题(更多帮助here in section A.11.2,例如使用SET NAMES并更改MySQL INI文件)。您还应该尝试手动将十六进制插入到数据库表中,并将其正常选择为十六进制,以确保数据正确输入和输出。

如果您仍怀疑数据库有问题,请确保您的表格正确编码字符集(即DEFAULT CHARSET),例如(或other examples):

SHOW CREATE TABLE table_name