2009-02-12 6 views
2

J'utilise MySQL 5 sur un hébergement mutualisé, en me connectant à partir d'ASP.NET 3.5 en utilisant le pilote MySQL 5.1 ODBC. J'aimerais stocker les chaînes UTF8. Mes tableaux utilisés pour être tous dans « latin1_swedish_ci », mais je me suis converti la base de données, table et colonne UTF8 en utilisant:Comment écrire du texte UTF8 à MySQL depuis ASP.NET via 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 

Mais je reçois toujours cette erreur lors de l'insertion des caractères non-ascii (comme « 遊 ぶ ») dans ma base de données en utilisant un OdbcConnection et 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

Notez que depuis que je suis à l'aide du pilote 5.1, je ne peux pas utiliser "SET NAMES utf8;" - il produit une erreur

.

Des idées que je manque?

Répondre

3

Quelques-unes des choses à vérifier:

  1. Assurez-vous que vos tables et les champs de texte acceptent vraiment UTF8:
    Utilisez le MySQL Query Browser et essayez de modifier certaines données manuellement.
    S'il reste OK une fois que vous avez sauvegardé vos modifications, les champs et les tables sont correctement définis.

  2. Assurez-vous que vous insérez réellement des caractères conformes à utf8 et non des caractères basés sur une autre forme de codage comme le GB2332 pour le chinois.
    Si c'est le cas, vous devrez peut-être convertir les chaînes en utf8 avant de pouvoir les envoyer à la base de données.
    Vous pouvez jeter un oeil à l'utilisation de la classe Encoding dans .Net.
    J'ai answered a post sur quelque chose lié il ya quelque temps et il y a un CodeProject article sur ce problème.

  3. Vous avez probablement besoin aussi de vous assurer que le ODBC connection string comprend les éléments suivants:

    charset = UTF8;

Il existe un list of all the parameters que vous pouvez utiliser pour la connexion ODBC.

+0

Merci - le navigateur MySQL Query m'a montré que l'une des colonnes n'avait pas été commutée comme je le pensais. – bhollis

Questions connexes