我有一个表单,但每次我提交韩文字符时,它都会在我的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");
以及以下截图。非常感谢您提供任何帮助。
答案 0 :(得分:3)
当尝试使用utf8 / utf8mb4时,如果您看到问号(常规问号,而不是黑色钻石),
CHARACTER SET utf8
(或utf8mb4)。解决这个问题。尝试使用utf8 / utf8mb4时,如果您看到带有问号的黑钻石, 其中一种情况存在:
案例1(原始字节不 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