воскресенье, 27 февраля 2011 г.

MySQL и C#: Проблема с русскими буквами при сохранении в таблицу

Наверное это самая популярная проблема в MySQL – при сохранении русского текста в таблицу, текст стает таким вот: «?????? ??????!». Т.е все русские буквы преобразовываются в знаки вопроса, что говорит о проблеме кодировок.

MySQL C# Text Encoding Problems

Самым популярным решением этой проблемы было выполнить следующий запрос для установки необходимой кодировки после подключения:
SET NAMES utf8

Это и у меня работало в Perl и PHP, а вот в C# – не сработало.
И тут-то пошли извращения, дошло даже до такого:

string UtfConv(string strToConvert)
{
return System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Default.GetBytes(strToConvert));
}


Хорошо, что этот способ не сработал.
А оказалось, что стоит лишь немного подправить ConnectionString, указав в нем заветную кодировку:

И MySQL ConnectionString превращается…:
"server=localhost;uid=root;pwd=root;database=deeprss "

… превращается в следующий:
"server=localhost;uid=root;pwd=root;database=deeprss;charset=utf8"


Параметр я вычитал тут:
21.2.6. Connector/NET Connection String Options Reference


Все таблицы в БД у меня в utf8.

19 коммент.:

Магистр комментирует...

Ты гений!
Спасибо тебе, о друг!

DmytroZ комментирует...

Магистр, я рад тому, что этот пост Вам в чем-то помог

Sokol комментирует...

Мужик , мужичара вообще!

Sokol комментирует...

Там в этом connection string оказывается можно туеву хучу настроек задавать..Полезная ссылочка

Unknown комментирует...

Спасибо!!!

-NEGI- комментирует...

СПАСИБО, ЧУВАК!

Анонимный комментирует...

Реальное спасибо!

Анонимный комментирует...

Не посмотрите на мою похожую проблему?
http://www.cyberforum.ru/windows-forms/thread885447.html#post4644314

Unknown комментирует...

Да, действительно работает! Спасибо!

TDM комментирует...

Спасибо! Вы мне очень помогли! Чувствовал, что дело в кодировке, но чтобы поправить ConnectionString даже не подумал.

DmytroZ комментирует...

На здоровье!
Вот это да, этому посту уже 6 лет, а проблема до сих пор актуальна :D

Unknown комментирует...

Работает! Спасибо!

Unknown комментирует...

Спасибо, дружище! Сегодня полдня прому...хался с этой кодировкой, пока не натолкнулся на твой пост. А ларчик-то просто открывался:)

DmytroZ комментирует...

Судя по комментариям, раз в год кто-то сталкивается с этой проблеммой. Вот только в 2014-м никто не писал :D

Unknown комментирует...

Вот кто бы знал, а?! Спасибо!!!!!

Unknown комментирует...

Этот коннектор жопа полная. Я задолбался с ним париться.

Те функции которые в C# еще вчера работали сегодня перестали работать.

Даю на вывод SQL запрос и вставляю его вручную - все работает отлично. Пробую через коннектор сделать тот же SELECT и нихрена не работает... Просто вынос мозга.

Разработчики библиотеки мудаки!

Unknown комментирует...

Супер!!! Благодарю!!!!!!

Unknown комментирует...

Ты просто спас меня!!! 6 часов проб и ошибок...
Наткнулся на твою статью и мир стал прекрасным!)))
Как тебе лайк поставить?)

Игорь комментирует...

Огромное спасибо, если б не ты, ещё б пол часа сидел с это фигней

Отправить комментарий

 

.NET ate my MOSK;. Powered By Blogger © 2009 Bombeli | Theme Design: ooruc