You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net Core读取MySQL数据库变音符号显示异常求助

解决MySQL EF Core读取变音符号乱码问题

看你的描述,写入数据时变音符号正常,但读取时出现乱码,结合你的技术栈(ASP.NET Core 2.0.5 + MySql.Data.EntityFrameworkCore 8.0.11),我整理了几个关键的排查和修复步骤:

1. 检查数据库与表的字符集配置

首先要确认你的MySQL数据库和Mandant表是否使用了utf8mb4字符集——MySQL原生的utf8实际上是utf8mb3,仅支持部分Unicode字符,而utf8mb4才是完整的UTF-8实现,更适配含变音符号的场景:

  • 查看数据库默认字符集:
    SELECT @@character_set_database, @@collation_database;
    
  • 查看表和字段的字符集配置:
    SHOW CREATE TABLE Mandant;
    

如果表或MandantName字段的字符集不是utf8mb4,执行以下语句修改:

ALTER TABLE Mandant CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2. 修正连接字符串的字符集参数

把连接字符串中的CharSet=utf8替换为CharSet=utf8mb4,确保驱动用完整的UTF-8编码传输数据:

server=192.168.2.230;userid=tester;pwd=test;port=3306;database=Mandanten;sslmode=none;CharSet=utf8mb4;

3. 修复EF Core驱动版本兼容性问题

这大概率是核心问题:你使用的MySql.Data.EntityFrameworkCore 8.0.11和ASP.NET Core 2.0.5不兼容。Oracle的MySQL EF Core驱动8.0.x系列是为EF Core 2.1及以上版本设计的,而ASP.NET Core 2.0对应的EF Core版本是2.0,版本不匹配会导致编码处理等底层逻辑异常。

建议你降级驱动到适配EF Core 2.0的版本,比如MySql.Data.EntityFrameworkCore 2.0.8(通过NuGet包管理器安装即可)。如果愿意切换更稳定的第三方驱动,也可以尝试Pomelo.EntityFrameworkCore.MySql,它对ASP.NET Core的兼容性更好,针对2.0版本可安装Pomelo.EntityFrameworkCore.MySql 2.0.1,配置方式如下:

services.AddDbContext<YourDbContext>(options =>
    options.UseMySql(Configuration.GetConnectionString("YourConnectionString")));

4. 显式配置EF Core的字符集行为

如果调整版本后仍有问题,可以在DbContext配置中强制指定字符集行为:

services.AddDbContext<YourDbContext>(options =>
    options.UseMySQL(Configuration.GetConnectionString("YourConnectionString"),
        mysqlOpts => mysqlOpts.CharSetBehavior(CharSetBehavior.NeverAppend)
                              .CharSet(CharSet.Utf8Mb4)));

这会避免驱动自动追加不兼容的字符集参数,确保数据传输编码统一。

按照这些步骤逐一排查,应该就能解决变音符号读取乱码的问题了。

内容的提问来源于stack exchange,提问作者Yobikir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:53:13