我有一个mysql数据库,它被创建为utf8mb4(带有排序规则utf8mb4\u collate\u 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,我可以在db中存储并显示非ascii文本,在jsp页面中,我可以正确显示存储的文本。但是,当我尝试从jsp页面插入包含非ascii文本的新行时,它们最终在数据库中存储为“???????”(无论是从jsp还是从mysql workbench中选择,都是这样显示的)。如果将插入的文本显示为jsp页面的一部分,它将在浏览器中正确显示。
我唯一能想到的是,jsp到mysql的网络连接以某种方式使用了错误的编码,但我完全搞不懂如何或为什么这样做。
欢迎任何建议!
1条答案
按热度按时间gc0ot86w1#
问题确实出在jsp到mysql的编码上。使用“show variables”显示“character\u set\u server”是有罪的一方,被设置为“latin1”而不是“utf8”。madhur bhaiya的评论帮助我找到了一些指向其他页面的链接,这些页面建议在连接字符串中添加“?characterencoding=utf8”以覆盖服务器的默认连接编码。这就解决了问题。谢谢你,马休!