【问题标题】:Store Korean characters in MySQL在 MySQL 中存储韩语字符
【发布时间】:2016-11-01 19:46:45
【问题描述】:

我有一个表单,但每次我提交韩语字符时,它都会在我的 phpmyadmin 数据库中显示为问号,或者非常复杂。我希望能够使用拉丁字符和亚洲字符在我的 MySQL 数据库表中提交条目,我也在 E​​clipse 中使用 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");

以及下面的屏幕截图。非常感谢您的帮助。

【问题讨论】:

  • 请提供您得到的内容的屏幕截图(或剪切和粘贴),而不是韩语字符。

标签: java mysql utf-8 phpmyadmin


【解决方案1】:

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

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

在尝试使用 utf8/utf8mb4 时,如果您看到 Black Diamonds 带有问号, 存在以下情况之一:

案例1(原始字节不是 utf8):

  • 要存储的字节未编码为 utf8。解决这个问题。
  • INSERTSELECT 的连接(或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 不同。可以处理,但需要不同的步骤。

【讨论】:

【解决方案2】:

我建议您将除数据库之外的所有内容都排除在外,以确保问题确实出在数据库上。首先检查十六进制的值:

SELECT HEX(column_name) FROM table_name

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

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

SHOW CREATE TABLE table_name

【讨论】:

猜你喜欢
  • 2011-01-19
  • 2012-06-15
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 2012-06-26
  • 2012-09-16
  • 1970-01-01
相关资源
最近更新 更多