【问题标题】:Windows -1252 is not supported encoding nameWindows -1252 不支持编码名称
【发布时间】:2015-12-04 22:06:44
【问题描述】:

我正在使用 Windows 10 通用应用程序和 ARM CPU 为 Raspberry Pi 创建应用程序。我收到以下编码错误:

附加信息:“windows-1252”不是受支持的编码名称。有关定义自定义编码的信息,请参阅 Encoding.RegisterProvider 方法的文档。

 private async void Login(string passcode)
    {
        try
        {
            MySqlConnection conn = new MySqlConnection("Server=...");
            MySqlCommand cmd;

            conn.Open();

            cmd = new MySqlCommand("Select * from ...");

            var dr = cmd.ExecuteReader();

            int count = 0;

            while (dr.Read())
                count += 1;

            var dialog = new MessageDialog((count == 1) ? "Logged In" : "Error");
            await dialog.ShowAsync();

        }
        catch (Exception ex)
        {
           var dialog = new MessageDialog(ex.Message);
           await dialog.ShowAsync();
        }
        finally { conn.Close(); }
    }
}

我在这行代码中得到错误

dr = cmd.ExecuteReader();

在我使用它之前

conn.open();

但我可以通过添加来解决它

charset=utf8

到连接字符串。

我该如何解决这个错误?

【问题讨论】:

  • 不确定您还有什么问题,因为“我能够通过...解决它”是帖子的最后一部分...请用确切的问题替换感谢信。
  • @AlexeiLevenkov 好吧,当我在行代码“conn.open();”中遇到同样的错误时,我能够解决它但是,现在我在“dr = cmd.ExecuteReader();”行中收到此错误这说明清楚了吗?
  • @vnikhil 谢谢,但这不适用于我的情况
  • cp1252 非常接近 MySQL 的“latin1”CHARACTER SET

标签: c# mysql encoding arm windows-1252


【解决方案1】:

从 .NET Core 2.2 项目中,我必须通过 Nuget 安装以下两个包:

(System.Text.Encoding & System.Text.Encoding.CodePages)

那你必须在使用库之前设置它:

 using System.Text;
 …
 {
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    ...
 }

【讨论】:

  • 这为我解决了问题,似乎是解决问题的更合适的方法。
【解决方案2】:

我通过添加解决了这个问题

System.Text.EncodingProvider ppp = System.Text.CodePagesEncodingProvider.Instance;
Encoding.RegisterProvider(ppp);

【讨论】:

  • 这是正确的答案!它帮助我解决我的问题!谢谢!
  • 正如@ΩmegaMan 所说,对于 .NET Core/Standard 项目,您需要将 NuGet 包 System.Text.Encoding.CodePages 添加到引用中。
猜你喜欢
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 2016-12-28
  • 2018-01-13
  • 1970-01-01
  • 2014-08-07
  • 2014-11-17
  • 1970-01-01
相关资源
最近更新 更多