web-dev-qa-db-fra.com

C # Mysql UTF8 Encodage

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.

15
T4mer
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=utf8;

Remarque! Utilisez la valeur minuscule utf8 et non la majuscule UTF8 car cela échouera.

Voir http://www.connectionstrings.com/mysql

26
x06265616e

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

5
Anthony Van Dooren

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.

3
Bryan Legend

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.

0
Robert H

CHARSET devrait être en majuscule

Server=localhost;Port=3306;Database=xxx;Uid=x xx;Pwd=xxxx;CHARSET=utf8;
0
M.Shakeri

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';

0
Kevin Tighe

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.

0
Ramon Gonzalez