web-dev-qa-db-fra.com

Comment afficher le texte dans UTF8 de MySQL / PHPMYADMIN?

J'ai une base de données avec plusieurs tables. La base de données et la table et chaque ligne de table sont définies sur utf8_romanian_ci.

Chaque nom que j'importe contenant des diacritiques ne sera pas affiché correctement.

Par exemple: si j'introduit MaÂehx Dans le tableau, je n'ai que M

Les données de la table sont importées du fichier csv. Dans Excel, les diacritiques apparaissent normalement.

Comment puis-je résoudre ça ?

5
Utf8

UTF-8 est une maîtresse fickle. Pour une application Web typique, vous devez définir UTF-8 à de nombreux niveaux. Même si le code PHPMYADMIN fonctionne bien avec UTF8, il ne fonctionne pas dans un vide: la configuration du serveur est importante. Donc, la base de données est donc la source de données de la base de données. Résumons les domaines de frottement potentiel dans une application générale, en particulier sur les domaines d'intérêt de phpmyadmin.

a. Source de données

Lorsque les données sont importées dans la base de données, par exemple à partir d'un fichier texte, il doit avoir le bon codage. Les diacritiques peuvent être montrés dans Excel, mais le codage pourrait être n'importe quoi. Vous pouvez donc avoir un fichier CSV qui a l'air bien, mais cela n'importe pas correctement. Vous pouvez vérifier et convertir le codage de votre fichier CSV dans un éditeur de texte tel que EdiDPAD ou an IDE tel que KOMODO. Dans NotePad ++, dont de nombreuses personnes, vous pouvez sélectionner "Encodage" pour voir Votre codage actuel et vous pouvez sélectionner le codage/convertir en UTF8 dans les besoins.

b. Dans votre base de données. Le jeu de caractères de la table et la collation doivent être définis sur UTF-8. On dirait que vous l'avez déjà fait.

Sinon, vous avez besoin de quelque chose comme:

ALTER TABLE MyTable
DEFAULT CHARACTER SET utf8,
COLLATE utf8_general_ci;

C'est le cadre générique, mais votre collation roumaine devrait aussi bien fonctionner.

c. La connexion à la base de données. Vous avez besoin de quelque chose comme:

$connectDSN = "mysql:Host={$db_Host};dbname={$db_name};charset=UTF-8";

Phpmyadmin doit se connecter correctement. Sur la page d'atterrissage, vous devriez voir

Server charset: UTF-8 Unicode (utf8) 

Sinon, continuez à lire.

d. Php doit traiter UTF8. dans php.ini, vous voudrez quelque chose comme:

default_charset = UTF-8     
mbstring.language = Neutral 
mbstring.internal_encoding = UTF-8      
mbstring.encoding_translation = On      
mbstring.http_input = auto      
mbstring.http_output = UTF-8        
mbstring.detect_order = auto        
mbstring.substitute_character = “0xFFFD”    

Vous pouvez vérifier vos paramètres de serveur avec phpinfo (). Sur un hôte partagé, vous n'avez généralement pas accès à PHP.ini et devez modifier les paramètres directement dans le script. Au fait, n'oubliez pas d'utiliser les fonctions MB.

E. Configuration de l'en-tête

Pour que le navigateur sache de savoir ce qu'il obtient, il doit recevoir un en-tête tel que le suivant envoyé par PHP:

<?php  header('Content-type: text/html; charset=UTF-8');   ?>

Cela ne devrait pas être un problème avec phpmyadmin. Dans Firefox, à l'aide de l'extension Web Developer, vous pouvez utiliser des informations/voir les informations de page. Dans l'onglet Général, cela vous montrera le codage.

F. Tag HTML META

Ceci est recommandé d'aider le navigateur.

<meta charset="UTF-8">

Cela ne devrait pas être un problème avec phpmyadmin. Encore une fois, vérifiez dans le navigateur ce qui codant pour voir.

g. Police

Le navigateur peut ne pas avoir la police pour afficher certains caractères, bien que les versions modernes soient plutôt bonnes pour les polices de secours. Ce n'est probablement pas un problème dans votre cas.

Donc, il y a beaucoup d'endroits où les choses peuvent aller mal.

J'espère que cela vous aidera à identifier le problème!

Quand tout s'aligne, alors magie ... vous obtenez UTF8 partout.

Et n'oublie pas:

ಇಲ್ಲಿ ಸಂಭವಿಸು ಸಂಭವಿಸು

ನಿತ್ಯವೂ ಅವತರಿಪ ಅವತರಿಪ

4
zx81