AhmedOsamaMoh Ответов: 5

MySql, C# и арабский язык


Дорогие все,

У меня есть таблица , содержащая столбец, который содержит арабский текст, теперь я уверен, что col. набор символов-это utf8 а коллекция есть utf8_unicode_ci а вот и соединительная строка:

Driver={MySQL ODBC 3.51 Driver};Server=XXX ;Port=3306;Database=XXX;User=root;password=XXX;Option=3;CharSet=UTF8;


Когда я читаю таблицу с помощью MySql Workbench она очень хорошо отображает арабский текст
Когда я читаю его с помощью Navicate Lite, он также отлично отображается
Когда я читаю его с помощью своего программного обеспечения C# + Vs2005 , он отображает странные буквы (я попробовал textbox & a datagridview)

Так что же мне делать? Я проверил много результатов google и ни в коем случае некоторые сайты не сказали что я должен запросить "set names = utf8" перед каждым запросом, но я не знаю, как вставить его в код, так как я использую TableAdapter и BindingSource поэтому я не пишу SQL-команду напрямую в коде.

спасибо всем
пока

5 Ответов

Рейтинг:
2

opden

возможно, я опоздаю с этим ответом, но я публикую его для дальнейшего использования другими пользователями
я также искал способ вставить арабский язык в базу данных MySQL
до сих пор мне удалось получить следующее решение для правильной работы на VB .net
в настоящее время я использую MySQL connector .Net 6.4.4

сначала я установил параметры сортировки по умолчанию для своей базы данных на cp1256 - default, поскольку windows использует это для арабского языка (по этой ссылке[^])

тогда в строке подключения поставить кодировку в cp1256, похожий на этот
Данные = Новый MySqlConnection("сервер = ХХХ;базы данных = ХХХ;Уид = ХХХ;Фрд = ХХХ;кодировка=cp1256;")

теперь я просто сделал обычную команду вставки с арабской буквой, и все работало нормально
SQL = "вставить в tbl1 (enVal, ArVal) значения ("test","arabic_characters");"

надеюсь, что эта информация поможет


Рейтинг:
12

AhmedOsamaMoh

окончательное использование ODBC версии 5 но вы возможно столкнетесь с тем что vs2005 не сможет легко видеть таблицы
и гораздо лучше вообще не использовать ODBC , а использовать .net connector


Рейтинг:
1

Kim Togo

Попробуйте использовать Разъем MySQL/.Чистая[^] это полностью управляемый ADO.NET драйвер для MySQL. Драйвер ODBC-это старый драйвер.


Рейтинг:
0

Mastersev

Попробуйте использовать букву "N" перед каждым именем в ваших запросах. например:
Вставить в таблицу значения(N 'Arabic text').


Рейтинг:
0

Alex Calidguid

попробовать это...

public static string Server = "127.0.0.1";
публичная статическая строковая база данных = "схемы";
публичный статический пользователь: string = "корень";
публичный статический строковый пароль = "";
публичный статический строковый порт = "3306";
public static string charset = "utf8";

public static string constring = "Server=" + Server + ";" + "PORT=" + Port + ";" + "Database=" + Database + ";" + "Uid=" + User + ";" + "Password=" + Password + ";" +"charset=" + charset + ";";
public MySqlConnection cn = new MySqlConnection(constring);


Надеюсь поможет


Member 10026516

использование charset=utf8 в строке coonection, но это не работает