Stworzyłem za pomocą Silverlight, WCF i MySQL aplikację. Pobieram w niej dane z formularzy (Silverlight), przesyłam je do web service (WCF), który łączy się z bazą (MySQL), tworzy zapytanie i je wykonuje. Pojawił się jednak problem z ogonkami w polskich znakach. Otóż po stworzeniu zapytania, w którym jakaś wartość ma polskie znaki, są ogonki są obcinane, i tak zamiast "ą", w bazie mam "a", zamiast "ć" jest "c" itd. Baza cała jest kodowana w utf8_unicode_ci.
[Kod]
MySqlHelper.ExecuteNonQuery(Db.ConnString, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
MySqlHelper.ExecuteNonQuery(Db.ConnString, "UPDATE tasks SET `name`='ąćęłńóśźż' WHERE `taskId` = '3'");
I zamiast mieć atrybut "name" ustawiony "ąćęłńóśźż", w bazie jest "acelnószz". Jeśli natomiast to zapytanie skopiuję i ręcznie wrzucę do bazy, wszystko jest OK, polskie znaki są, zatem pewnie coś jest źle w momencie wysyłania zapytania przez .NET Connector. Nie pomaga także ten sposób, gdzie konwertuję string z Unicode na UTF-8:
[Kod]
UnicodeEncoding unicode = new UnicodeEncoding();
UTF8Encoding utf8 = new UTF8Encoding();
byte[] unicodeBytes = unicode.GetBytes(query);
byte[] utfBytes = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, unicodeBytes);
string utfQuery = utf8.GetString(utfBytes);
MySqlHelper.ExecuteNonQuery(Db.ConnString, utfQuery);
Wie ktoś jak to naprawić, żeby polskie znaki nie ginęły przy przesyłaniu zapytania?