Windows -1252不支持编码名称.C#

Muh*_*mah 7 c# mysql encoding arm windows-1252

我正在使用Windows 10 Universal App和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(); }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这行代码中得到了错误

dr = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

在我以前使用它之前

conn.open();
Run Code Online (Sandbox Code Playgroud)

但我能够通过添加来解决它

charset=utf8
Run Code Online (Sandbox Code Playgroud)

到连接字符串.

我该如何解决这个错误?

Ωme*_*Man 29

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

System.Text.Encoding |  代码页

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

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

 using System.Text;
 …
 {
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    ...
 }
Run Code Online (Sandbox Code Playgroud)

  • 这为我修复了它,似乎是解决问题的更合适的方法。 (2认同)

小智 13

我解决了这个问题

System.Text.EncodingProvider ppp;
ppp = System.Text.CodePagesEncodingProvider.Instance;
Encoding.RegisterProvider(ppp);
Run Code Online (Sandbox Code Playgroud)