部署与本地:存储的数据在部署的应用程序与使用 mysql 的本地应用程序中是意外的

deployed vs local: stored data are unexpected in the deployed app vs local app using mysql

我正在开发一个网络应用程序,并尝试使用 asp.net 核心 3.1 存储来自 post 请求的一些输入数据。

起初我应该说我使用非英语语言进行输入。

在本地状态下一切正常,但是当我发布它并尝试将数据存储在 MySQL 数据库中时,值是意外的(以一些问号的形式)。我想到的第一件事可能是我使用了不合适的字符集和编码,所以我将编码更改为我本地最接近的编码。没用。 我什至分析了 HTTP 请求,没有问题。
然后我尝试使用插入方法直接在 phpMyAdmin 中插入。工作正常。

本地编码:utf8mb4_0900_ai_ci
远程编码:utf8mb4_unicode_ci

如有任何帮助,我们将不胜感激。

连接参数决定了客户端中字节的字符集。要正确存储和检索数据,您必须知道字符集并在连接时宣布它。

在客户端和服务器之间传输数据时,MySQL 将从该字符集转换为为您要存储到/从中获取的列定义的字符集。

听起来您为一个客户端正确地建立了字符集,而为另一个客户端建立了错误的字符集。

如果你能在客户端提供字符的十六进制,我可以进一步解释。

utf8mb4_0900_ai_ciutf8mb4_unicode_ci 不同 Collat​​ions 相同 字符集(编码)utf8mb4.字符将在客户端和服务器之间传输而无需任何转码。但是,由于排序规则不同,比较可能会出现问题。