C # с символами MySql и Unicode - PullRequest
       15

C # с символами MySql и Unicode

4 голосов
/ 21 января 2012

Моя проблема заключается в использовании C # и базы данных MySQL для сохранения некоторых записей путем отправки параметров.

Хотя я уже установил кодировку как Utf-8 и могу правильно видеть символы Юникода, проблема, возникающая при попытке вставить символы Юникода, заключается в том, что он сохраняет только половину строки.

Действительно странно, что это происходит только со строками Unicode, такими как греческие слова, и только когда я отправляю запрос с параметрами.

Т.е.. если мой запрос, как видно из C #:

string query = "INSERT INTO tablename VALUES (NULL, @somestring)";

и я установил значение параметра @somestring как "ТЕСТИРОВАНИЕ". Это будет работать просто отлично.

Если я пытаюсь установить значение в виде строки Unicode "ΤΕΣΤΙΝΓ", запрос выполняется без ошибок, но сохраняет только половину символов в базе данных, т.е. сохраняет только «ΤΕΣΤ».

С другой стороны, если я удаляю параметры и настраиваю запрос так:

string somestring = "ΤΕΣΤΙΝΓ";
string query = "INSERT INTO tablename VALUES (NULL,'" + somestring + "')";

запрос снова работает просто отлично И сохраняет все слово / предложение в базе данных.

Надеюсь, я объяснил это правильно, и вы можете понять мою ситуацию.

Спасибо

1 Ответ

5 голосов
/ 21 января 2012

Длина того, как вы объявляете параметр @somestring, слишком мала в c #.

UTF-8 занимает до 3 байтов на символ, поэтому вам потребуется длина 21, а не 7, например, чтобы соответствовать тестированиюи их разновидности

Сказав это, я не использовал c # для вызова MySQL (только SQL Server), но я уверен, что это проблема

...