J'ai une base de données mysql avec l'encodage utf8_general_ci,
je me connecte à la même base de données avec php en utilisant la page et le code de fichier utf-8 et aucun problème.
j'édite la chaîne de connexion pour être comme ça
server=localhost;password=root;User Id=root;Persist Security Info=True;database=mydatabase;Character Set=utf8
mais le même problème.
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=utf8;
Remarque! Utilisez la valeur minuscule utf8 et non la majuscule UTF8 car cela échouera.
pourriez-vous essayer:
Server=localhost;Port=3306;Database=xxx;Uid=x xx;Pwd=xxxx;charset=utf8;"
Edit: J'ai une nouvelle idée:
//To encode a string to UTF8 encoding
string source = "hello world";
byte [] UTF8encodes = UTF8Encoding.UTF8.GetBytes(source);
//get the string from UTF8 encoding
string plainText = UTF8Encoding.UTF8.GetString(UTF8encodes);
bonne chance
plus d'informations sur cette technique http://social.msdn.Microsoft.com/forums/en-us/csharpgeneral/thread/BF68DDD8-3D95-4478-B84A-6570A2E20AE5
Vous devrez peut-être utiliser le jeu de caractères "utf8mb4" pour la colonne afin de prendre en charge les caractères sur 4 octets tels que: "λ ????"
Le jeu de caractères utf8 ne prend en charge que 1 à 3 octets par caractère et ne peut donc pas prendre en charge tous les caractères unicode.
Voir http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html pour plus de détails.
Une chose que j’ai trouvée, mais que j’ai pas eu l’occasion de parcourir vraiment, c’est les tableaux de classement disponibles ici: http://www.collation-charts.org/mysql60/
Cela vous indiquera quels caractères font partie d'un classement MySQL donné, ce qui vous permet de choisir la meilleure option pour votre jeu de données.
CHARSET devrait être en majuscule
Server=localhost;Port=3306;Database=xxx;Uid=x xx;Pwd=xxxx;CHARSET=utf8;
La définition du jeu de caractères dans la chaîne de connexion fait référence au jeu de caractères des requêtes envoyées au serveur. Cela n'affecte pas les résultats renvoyés par le serveur.
https://dev.mysql.com/doc/connectors/en/connector-net-connection-options.html
Un moyen que j'ai trouvé pour spécifier le jeu de caractères du client est de l'exécuter après l'ouverture de la connexion.
set character_set_results='utf8';
Juste au cas où certains viendraient ici plus tard.
Je devais créer une méthode Seed à l'aide de Mysql avec EF6 pour charger un fichier SQL. Après l'avoir lancé, j'ai eu des personnages étranges sur la base de données, comme? remplacer é, ó, á
SOLUTION: Assurez-vous de lire le fichier en utilisant le bon jeu de caractères: UTF8 sur mon cas.
var path = System.AppDomain.CurrentDomain.BaseDirectory;
var sql = System.IO.File.ReadAllText(path + "../../Migrations/SeedData/scripts/sectores.sql", Encoding.UTF8);
Et puis rappel M.Shakeri:
CHARSET = utf8 sur la chaîne cxn dans web.config. Utilisation de CHARSET en majuscule et en utf8 minuscule.
J'espère que ça aide.
R.