我有一个MySQL数据库,该数据库创建为utf8mb4(排序规则为utf8mb4_collate_ci),正在通过某些JSP页面进行访问。 JSP页面都以UTF-8格式存储,并且都包含以下标记:
<%@ page contentType="text/html; charset=utf-8" %>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
使用MySQL Workbench,我可以在数据库中存储非ASCII文本并显示它,在JSP页面中,我可以正确显示存储的文本。但是,当我尝试从JSP页面插入包含非ASCII文本的新行时,它们最终将存储为“ ??????”。在数据库中显示(并且无论是从JSP还是从MySQL Workbench中选择,都显示出来)。如果我在JSP页面中显示要插入的文本,则该文本会在浏览器中正确显示。
我唯一能想到的是,JSP到MySQL网络连接以某种方式使用了错误的编码,但我完全不知如何或为什么。
欢迎任何建议!
答案 0 :(得分:0)
确实是从JSP到MySQL的编码。使用“显示变量”显示“ character_set_server”是有罪的一方,被设置为“ latin1”而不是“ utf8”。 Madhur Bhaiya的评论帮助我找到了其他页面的链接,建议您在连接字符串中添加“?characterEncoding = utf8”以覆盖服务器的默认连接编码。这样就解决了问题。谢谢,马杜尔!