首页 > 解决方案 > 已部署与本地:已部署的应用程序与使用 mysql 的本地应用程序中存储的数据是意外的

问题描述

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

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

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

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

任何帮助,将不胜感激。

标签: c#mysqlwebencodingasp.net-core-3.1

解决方案


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

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

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

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

utf8mb4_0900_ai_ci并且是相同字符集(编码)utf8mb4_unicode_ci的不同排序规则。字符将在客户端和服务器之间传递,无需任何转码。但是,由于排序规则不同,比较可能会引起麻烦。utf8mb4


推荐阅读