首页 > 解决方案 > UTF-8 在 MySQL DB 中存储为问号

问题描述

我有一个 MySQL 数据库,它创建为 utf8mb4(带有排序规则 utf8mb4_collat​​e_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 的网络连接不知何故使用了错误的编码,但我完全不知道如何或为什么。

欢迎任何建议!

标签: mysqljsputf-8

解决方案


确实是 JSP-to-MySQL 编码才是问题所在。使用“显示变量”显示“character_set_server”是有罪的一方,被设置为“latin1”而不是“utf8”。Madhur Bhaiya 的评论帮助我找到了一些指向其他页面的链接,这些链接建议将“?characterEncoding = utf8”添加到连接字符串以覆盖服务器的默认连接编码。这解决了问题。谢谢,马杜尔!


推荐阅读