utf8 tronqués lors de l'importation dans mysql
Importation UTF8-codée de données dans mysql ne fonctionne pas pour moi. Les caractères UTF8 sont endommagés. Par exemple Nöthnagel est affiché comme Nöthnagel
J'ai créé un dump sql de fichier pour effectuer l'importation qui contient codé en UTF-8 données. Par exemple:
INSERT INTO `users` VALUES(1, 'Fred','Nöthnagel');
La séquence d'octets représentant ö dans le fichier est c3 b6 qui je crois est correcte, car elle s'affiche correctement dans vim et dans mon shell bash qui a ces variables d'environnement définies:
$ env | grep -i utf
LANG=en_US.UTF-8
XTERM_LOCALE=en_US.UTF-8
La base mysql a été créé comme suit:
mysql> CREATE DATABASE mydb CHARACTER SET utf8;
La table mysql a été créé afin de:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(30) NOT NULL,
`last_name` varchar(30) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `last_name` (`last_name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
Je suis d'importer le fichier de vidage de la sorte:
mysql -u root -psecret mydb < mydump.sql
S'il vous plaît dites-moi ce qui est manquant à partir de ci-dessus.
- c'est un bon résumé, mais comment fais-tu l'affichage final qui donne Nöthnagel
- Avez-vous vérifier votre fichier d'encodage ?
- Ont essayé d'utiliser des NOMS de déclaration ? dev.mysql.com/doc/refman/5.0/en/charset-connection.html
- Les données d'origine sur un site web de django qui utilise sqlite. Le site web est maintenant en cours d'exécution mysql. Seules les données et le django config ont changé, de sorte qu'il est facile de les comparer
- Les données codées pour la ... dans le fichier est c3 b6. J'ai vérifié d'autres sources pour confirmer que c'est bien en utf8
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il pourrait avoir quelque chose à voir avec le classement, mais je ne suis pas sûr. Dans mon cas, il a certainement fait, depuis que j'ai eu à l'appui de l'alphabet cyrillique.
Essayez cette, travaillé pour moi:
Set initial de classement lors de la création de la base de données cible pour
utf8_general_ci
Ajouter
SET NAMES 'utf8' COLLATE 'utf8_general_ci';
vers le haut de votre fichier sqlExécuter
mysql -u root -p --default-character-set=utf8 yourDB < yourSQLfile.sql
Une chose de plus, afin de bien obtenir l'UTF-8 formulaire de données de votre base de données, vous devrez modifier votre chaîne de connexion ainsi. Par exemple:
mysql.url=jdbc:mysql://localhost:3306/nbs?useJvmCharsetConverters=false&useDynamicCharsetInfo=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&useEncoding=true
En outre, prendre un coup d'oeil à ce que mon problème a été.
SOURCE
le fichier, mais le résultat n'avait le mauvais encodage de toute façon ce qui m'a laissé très confus. Le point étant que le problème se situe uniquement dans l'importation de base de données, et queSOURCE
s'en fout.Le problème a été résolu par l'ajout de ce à le haut du fichier sql:
Utilisez cette commande pour importer utf8 table de base de données :
J'ai eu un problème similaire. Il y a un certain nombre de variables qui doivent être UTF8, non seulement la base de données, ceux-ci contiennent le client, la connexion, le ther serveur ...etc.
La solution à votre problème est décrit dans la cet article. L'décrit solution est portable, de sorte qu'il n'est pas seulement de travailler pour de l'utf-8, mais pour tous les autres jeux de caractères. Vous devrez peut-être modifier en fonction de vos besoins.