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

.NET 6(VB.NET)中MySqlDataAdapter连MySQL报Windows-1252编码错误

报错根因

.NET 6 属于跨平台的 .NET Core 生态线,和 .NET Framework 不同,默认不会内置 Windows-1252 等非通用代码页的编码实现。你当前使用的 Oracle 官方 MySql.Data 驱动在未显式指定连接字符集时,会默认尝试加载 Windows-1252 编码建立连接,找不到对应编码实现就会抛出该错误,和你是否手动配置过编码参数无关。

解决方法

你可以任选以下一种方案修复:

  • 方案1:显式指定连接字符集(推荐,无额外依赖)

    1. 将项目引用的 MySql.Data NuGet 包升级到最新稳定版本
    2. 在数据库连接字符串中显式添加 CharSet=utf8mb4 参数,修改后的连接字符串示例:
      "server=MyServerAddress;uid=MyUser;pwd=MyPW;database=MyInitialCatalog;CharSet=utf8mb4"
      

    显式指定字符集后,驱动会直接使用指定的UTF8编码建立连接,不会再尝试加载Windows-1252编码,从根源规避报错。utf8mb4 是MySQL支持完整Unicode字符集(含emoji、生僻字符)的标准配置,为当前生产环境首选。如果你的数据库实际使用gbk、latin1等其他编码存储数据,将CharSet参数替换为对应编码名称即可,避免出现乱码。

  • 方案2:注册缺失的编码提供程序(适用于无法升级驱动、不能修改连接字符串的场景)

    1. 给项目安装NuGet包 System.Text.Encoding.CodePages,该包包含了.NET 6 环境缺失的所有Windows平台代码页编码实现
    2. 在应用程序启动的最开头(控制台程序写在Main方法第一行、WinForm程序写在Application.Run之前、Web程序写在启动配置最前端)执行编码注册代码,VB.NET实现如下:
      Imports System.Text
      
      ' 启动阶段执行
      Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
      

    注册完成后,.NET 6 即可正常识别Windows-1252编码,数据库连接可以正常打开。

验证提示:修改完成后可以先运行你写的单独测试MySqlConnection.Open的代码验证,确认无报错后再运行原有数据填充逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:33:13