2009-02-12 3 views
2

Я использую MySQL 5 на общедоступном хостинге, подключаясь из ASP.NET 3.5, используя драйвер ODBC MySQL 5.1. Я хотел бы хранить строки UTF8. Мои таблицы, используемые, чтобы быть все в «latin1_swedish_ci», но я преобразовал базы данных, таблицы и столбец UTF8 с помощью:Как написать текст UTF8 в MySQL из ASP.NET через ODBC?

ALTER DATABASE `my_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; 
ALTER TABLE `my_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; 
ALTER TABLE `my_table` CHANGE `subject` `subjext` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL 

Но я все еще получаю эту ошибку при установке не-ASCII символы (например, «遊 ぶ») в моей базе данных, используя OdbcConnection и OdbcCommand:

ERROR [HY000] [MySQL][ODBC 5.1 Driver][mysqld-5.0.51b-community-nt]Incorrect string value: '\xE3\x80\x80\xE6\x89\x8B...' for column 'subject' at row 1

Обратите внимание, что, поскольку я использую драйвер 5.1, я не могу использовать "SET NAMES utf8;" - это выдает ошибку

.

Любые идеи, что мне не хватает?

ответ

3

Несколько вещей, чтобы проверить:

  1. Убедитесь, что ваши таблицы и текстовые поля действительно принимают utf8:
    Используйте MySQL Query Browser и попытаться изменить некоторые данные вручную.
    Если он остался ОК после сохранения изменений, то поля и таблицы будут правильно установлены.

  2. Убедитесь, что вы действительно вставляете символы, совместимые с utf8, а не символы, основанные на другой форме кодирования, такой как GB2332 для китайского.
    Если это так, вам может потребоваться преобразовать строки в utf8, прежде чем вы сможете отправить их в базу данных.
    Вы можете взглянуть на использование класса Encoding в .Net.
    У меня есть answered a post что-то связанное некоторое время назад и есть CodeProject article только на эту тему.

  3. Вы, вероятно, также необходимо, чтобы убедиться, что ODBC connection string включает в себя следующее:

    CharSet = utf8;

Существует list of all the parameters, который вы можете использовать для контура ODBC.

+0

Спасибо - браузер MySQL Query показал мне, что один из столбцов не переключился, как я думал. – bhollis

Смежные вопросы