C#, MySQL Connector .NET i problemy z kodowaniem

Pisałem ostatnio prosty program w C# do zarządzania bazą danych MySQL, oparty o MySQL Connector dla platformy .NET. Napotkałem pewien problem z kodowaniem, którego rozwiązanie zajęło mi stosunkowo wiele czasu. Pomimo ustawienia kodowania zarówno w bazie jak i kliencie jako UTF8, po edycji lub zapisaniu nowego rekordu zawierającego polskie znaki, pojawiały się zamiast nich odpowiadające im litery alfabetu angielskiego (ą -> a, ć -> c, ż -> z itd.). Najdziwniejszy w tym wszystkim był fakt, że rekordy odczytane z bazy wyświetlane były poprawnie. Na początku próbowałem standardowych zapytań zmieniających kodowanie połączenia:
SET CHARACTER SET 'utf8'
SET NAMES 'utf8'
Niestety, bez skutku. Po intensywnej sesji z Google odszukałem gdzieś w zakamarkach forum na stronie MySQL-a rozwiązujący problem, maleńki fragment kodu. Mianowicie, przy otwieraniu połączenia z bazą danych, należy do standardowego łańcucha dodać następujący fragment:
charset=utf8
Całość ma zatem wyglądać tak:
"Data Source=localhost;Database=database;User Id=user;Password=password;charset=utf8"
Wydaje się banalne, jednak po przeszukaniu wielu for i list dyskusyjnych nie udało mi się w szybki sposób znaleźć rozwiązania, dlatego też niniejszym popełniam ten wpis ;)

7 thoughts on “C#, MySQL Connector .NET i problemy z kodowaniem

  1. Niestety już od dłuższego czasu walczę z tym problemem, jednak bezskutecznie.
    Bazę jak i połączenie mam ustawioną na utf8, jednak zamiast polskich liter otrzymuję krzaczki.
    Czy mógłbym prosić o jakąś podpowiedź, bądź fragmencik działającego programu?

  2. Super! Miałem dokładnie ten sam problem. Bardzo ładnie to opisałeś i fajnie, że się podzieliłeś cenna informacje w przystępny sposób! :-)

    1. Dzięki za posta. Miałem ten sam problem. Właśnie doszedłem, że to po stronie klasy MySQL Connector tkwi problem, a Twoj wpis mi go rozwiązał w mig.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s