c# - 已部署与本地:已部署的应用程序与使用 mysql 的本地应用程序中存储的数据是意外的
问题描述
我正在开发一个网络应用程序并尝试使用 asp.net core 3.1 存储来自发布请求的一些输入数据。
起初我应该说我使用非英语语言进行输入。
在本地状态下一切正常,但是当我发布它并尝试将数据存储在 MySQL 数据库中时,值是意外的(以一些问号的形式)。我首先想到的可能是我使用了不合适的字符集和编码,所以我将编码更改为我本地最接近的编码。没用。我什至分析了 HTTP 请求,没有任何问题。
然后我尝试使用 insert 方法直接插入 phpMyAdmin。工作正常。
本地编码:utf8mb4_0900_ai_ci
远程编码:utf8mb4_unicode_ci
任何帮助,将不胜感激。
解决方案
连接参数确定客户端中字节的字符集。要正确存储和检索数据,您必须知道字符集并在连接时宣布它。
在客户端和服务器之间传输数据时,MySQL 将从该字符集转换为为您存储/从中获取的列定义的字符集。
听起来您为一个客户正确地建立了字符集,而为另一个客户建立了错误的字符集。
如果您可以在客户端中提供字符的十六进制,我可以进一步解释。
utf8mb4_0900_ai_ci
并且是相同字符集(编码)utf8mb4_unicode_ci
的不同排序规则。字符将在客户端和服务器之间传递,无需任何转码。但是,由于排序规则不同,比较可能会引起麻烦。utf8mb4
推荐阅读
- vue.js - 如何在对象用户中获取此数据名称?
- excel - 访问不规则命名范围中的第 n 个元素
- django - 如果选择来自查询集,则设置单选按钮初始值
- arrays - MATLAB对具有不同索引的数组求和
- scala - 如何使用 RDD Spark 计算总和列表和元组
- firebase-realtime-database - Firebase 将浏览器 api 密钥限制为 localhost,如果黑客也这样做了怎么办
- excel - PIvot 和公式函数显示独特的和多个结果
- sharepoint - 如何调用 SharePoint 将 DOCX/PPTX/XLSX 转换为 PDF(和 HTML)?
- java - 在java中设置按钮的位置和大小
- java - 读取扫描仪输入 java