2010-12-31 3 views
2

У меня проблема с вставкой ивритских строк на MySql.проблема с ивритом - MySql, C#

Введение

  1. Я установил MySql в utf8.
  2. Я накрыл стол в качестве набора символов utf8 с комплектовкой uft8_general_ci
  3. Я установил строку подключения, как это: "Server = ; Database =; Uid = ; PWD =; Charset = utf8;"
  4. Я пишу хранимую процедуру для ее использования C#.
  5. Версия MySql: 5.1.53

, когда я просто вставить строку в иврит таблицу по MySql как это:

insert into temp_table (temp_column) values ('ערך') 

я видел, как собственно. если я установлен хранимая процедура как .... см. Тарабарщина.

, когда я называю его в C# я получаю исключение как "Неверное значение строки:„\ xD7 \ Хаа \ xD7 \ xA8 ...“для столбца ...

если я вставлять английские строки, так что я получите все как должное.

любая идея?

+0

Можете ли вы опубликовать код C#, который вы используете для вставки значения? И покажите определение столбца, пожалуйста. – Oded

+0

Можете ли вы показать как сохраненный proc, так и код, который вы используете для его вызова из C# – Basic

+0

CREATE TABLE 'city' (' CityID' int (20) NOT NULL AUTO_INCREMENT, 'CityName' varchar (100) NOT NULL,« CitySynonyms »mediumtext , 'CityNumberPostOffice' VARCHAR (100) По умолчанию значение NULL,' UpdatedDate' даты по умолчанию значение NULL, PRIMARY KEY ('CityID')) ДВИГАТЕЛЬ = InnoDB CHARSET = УМОЛЧАНИЮ utf8 –

ответ

1

я добавил к хранимой процедуры кодировки utf8

в SP_CityName VARCHAR (100) кодировка utf8 , в SP_CitySynonyms mediumtext charset utf8

и теперь он отлично работает ... большое спасибо всем.

2

Вы сказали, что вы установили таблицу как кодировку UTF8, но вы также установили кодировку столбца в UTF8?

И/или попробуйте выполнить команду sending a SET NAMES utf8; на MySql перед выполнением хранимой процедуры.

SET NAMES указывает, какой набор символов клиент будет использовать для отправки SQL заявления на сервер. Таким образом, SET NAMES «cp1251» сообщает сервер, «будущие входящие сообщения от этого клиента находятся в символьном наборе cp1251.» Он также определяет набор символов , что сервер должен использовать для отправки результатов обратно клиента. (Для Например, это указывает на то, что характер набор использовать для значений столбцов, если вы использовать ЗЕЬЕСТ.)

+0

Я устанавливаю столбцы как utf8 тоже .. это не помогает :(. Я также пытаюсь отправить имена наборов utf8, мой mysql commander .. он говорит запрос ok 0 строк затронуты ... show: mysql> показать переменные типа 'char % '; | variable_name | Значение | character_set_client | utf8 | character_set_connection | utf8 | character_set_database | utf8 | character_set_filesystem | бинарные | character_set_results | utf8 | character_set_server | utf8 | character_set_system | utf8 8 строк в наборе (0,00 sec) –

+0

«set names» влияет только на это конкретное соединение, это не общий параметр mysql. Вы пытались отправить «заданные имена» непосредственно перед вашей хранимой процедурой, w hile по тому же соединению? – mikel

+0

Кроме того, попробуйте использовать программу администратора Mysql, такую ​​как sqlyog или phpmyadmin, чтобы вставить некоторые тестовые данные. Это должно помочь выяснить, находится ли проблема в коде соединения C# или структуре базы данных. – mikel

0

Используйте текст/LongText вместо varchar. Также используйте Collation как utf8_general_ci