使用 .NET Core 服务从 MySQL 读取 č、ć 和 đ
Posted
技术标签:
【中文标题】使用 .NET Core 服务从 MySQL 读取 č、ć 和 đ【英文标题】:Reading č, ć and đ from MySQL using .NET Core service 【发布时间】:2019-10-29 02:31:49 【问题描述】:我尝试了多种从 mysql 数据库中读取 ć、ć 和 đ 符号的选项,但均未成功。 代替:šuma, žeton, čevepčići, šuma, đak, džon
我得到:šuma、žeton、?evep?i?i、šuma、?ak、džon。
MySQl 表的排序规则是 utfmb4- 默认排序规则。相同的 .NET Core 服务在从数据库中读取上述标志时遇到问题,可以完美地执行插入操作。所以只是读取是个问题。
SO 上的一些成员建议在打开与数据库的连接后执行以下“SET 字符”命令应该会有所帮助,但这对我来说并非如此。
string commColl = "SET character_set_client = 'utf8mb4'; set character_set_results = 'utf8mb4'; SET collation_connection = 'utf8mb4_general_ci'; SET NAMES UTF8;";
MySqlCommand commCollation = new MySqlCommand(commColl, conn);
try
conn.Open();
commCollation.ExecuteNonQuery();
另外,我尝试设置为 'utf8' 也没有成功。 此外,我还将 CharSet 部分放入连接字符串中:
private readonly string connString = "host=aurora-host.wert.net;user=asop;password=ooppoo;database=test;Connect Timeout=10;CharSet=utf8;";
显示创建表:
创建表
FEEDBACK
(EntryID
int(11) NOT NULL AUTO_INCREMENT,AccessCode
varchar(45) 整理 utf8mb4_unicode_ci 默认为空,DocumentPath
varchar(255) 整理 utf8mb4_unicode_ci 默认为空,FreeText
varchar(4000) 整理 utf8mb4_unicode_ci 默认为空,DateInsert
日期时间默认为空,SurveyID
int(11) 默认为空,Document
斑点,DocumentExtension
varchar(5) 整理 utf8mb4_unicode_ci 默认为空,CompanyID
int(11) 默认为空, 主键 (EntryID
) ) ENGINE=InnoDB AUTO_INCREMENT=98 默认字符集=utf8mb4 COLLATE=utf8mb4_unicode_ci
【问题讨论】:
.NET 字符串是 UTF16。您发布的页面证明.NET 方面没有问题 - SO 是一个 ASP.NET 站点。can do insert operation perfectly
你确定吗? ?
是使用错误代码页转换 non Unicode 文本时使用的替换字符。当用错误的页面读取 to Unicode 时,使用了 Unicode 替换字符。
列的排序规则是什么?列上的 UTF8 和 Charset=UTF8
应该足够了。其他任何事情都只会造成麻烦
文本通过使用上述服务的网页插入到 mySQL 中,在 MySQLWorkBench 中我可以读取输入 1/1 的文本
很多人指出 UTF8 对 MySQL 来说是不够的,但它应该是 utf8mb4 排序规则,这是我的表的排序规则。列的数据类型是 VarChar
很多人指出了一些还不够的地方。替换字符的选择意味着问题发生在在文本转换为 Unicode 之前。您还没有发布表创建架构,因此无法复制问题并尝试查看问题所在
【参考方案1】:
因此,问题在于检索数据的存储过程引用了另一个表中具有 swedish_latin_ci 排序规则的列。
utf8 charset 和 utf8_general_ci 排序规则就足够了。
【讨论】:
以上是关于使用 .NET Core 服务从 MySQL 读取 č、ć 和 đ的主要内容,如果未能解决你的问题,请参考以下文章
如何从 .NET Core 6.0 中的 JWT 安全令牌中读取自定义声明值
C# 和 Docker - 无法从容器化 .NET Core 3.1 Web API 连接到容器化 MySQL 服务器