Windows -1252 не поддерживает имя кодировки

Я работаю с универсальным приложением Windows 10 и процессором ARM для создания приложений для 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

к строке подключения.

Как я могу решить эту ошибку?


person Muhand Jumah    schedule 09.09.2015    source источник
comment
Не уверен, какой вопрос у вас все еще есть, поскольку я смог решить его с помощью ... последней части сообщения ... Пожалуйста, замените благодарственные письма точным вопросом.   -  person Alexei Levenkov    schedule 09.09.2015
comment
stackoverflow.com/ вопросы/13563973/   -  person Nikhil Vartak    schedule 09.09.2015
comment
@AlexeiLevenkov хорошо, я смог решить эту проблему, когда получил ту же ошибку в коде строки conn.open(); Однако теперь я получаю эту ошибку в строке dr = cmd.ExecuteReader(); Это проясняет?   -  person Muhand Jumah    schedule 09.09.2015
comment
@vnikhil Спасибо, но в моей ситуации это не работает.   -  person Muhand Jumah    schedule 09.09.2015
comment
cp1252 довольно близок к latin1 CHARACTER SET MySQL.   -  person Rick James    schedule 13.09.2015


Ответы (2)


Из проекта .NET Core 2.2 мне пришлось установить через Nuget следующие два пакета:

System.Text.Encoding | Кодовые страницы

(System.Text.Encoding и System.Text.Encoding.CodePages)

Затем вы должны установить его перед использованием библиотек:

 using System.Text;
 …
 {
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    ...
 }
person ΩmegaMan    schedule 30.03.2019
comment
Это исправило это для меня и кажется более правильным способом решения проблемы. - person AlexKven; 15.05.2019

Я решил эту проблему, добавив

System.Text.EncodingProvider ppp = System.Text.CodePagesEncodingProvider.Instance;
Encoding.RegisterProvider(ppp);
person Stanislav Lyalikov    schedule 19.09.2015
comment
Это правильный ответ! Это поможет мне решить мою проблему! Спасибо ! - person Shinichi; 21.12.2020
comment
Как отметил @ΩmegaMan, для проекта .NET Core/Standard вам необходимо добавить пакет NuGet System.Text.Encoding.CodePages в ссылки. - person mikiqex; 03.04.2021