MySQL Convertir latin1 de données en UTF8
J'ai importé des données à l'aide de LOAD DATA INFILE dans une Base de données MySQL. La table et les colonnes sont en utilisant le jeu de caractères UTF8, mais le jeu de caractères par défaut de la base de données est latin 1. Parce que par défaut le type de caractère de la base de données est en latin1, et j'ai utilisé de LOAD DATA INFILE, sans spécifier un jeu de caractères, il interprète le fichier en tant que latin1, même si les données dans le fichier en UTF8. Maintenant, j'ai un tas de mal codé des données dans mon UTF8 colum. J'ai trouvé cet article qui semble répondre à un problème similaire, qui est "UTF8 inséré dans cp1251", mais mon problème est "Latin1 inséré dans UTF8". J'ai essayé d'édition les requêtes là pour convertir le codage latin1 de données en UTF8, mais ne peut pas le faire fonctionner. Soit les données proviennent de la même manière, ou même plus mutilé qu'avant. Juste comme exemple, le mot Québec est de montrer Québec.
[PLUS D'INFOS]
Lors de la Sélection des données enveloppé dans HEX(), Québec a la valeur 5175C383C2A9626563.
Create Table (raccourcie) de ce tableau.
CREATE TABLE MyDBName.`MyTableName`
(
`ID` INT NOT NULL AUTO_INCREMENT,
.......
`City` CHAR(32) NULL,
.......
`)) ENGINE InnoDB CHARACTER SET utf8;
SELECT HEX(name) FROM cities LIMIT 5
. avec cette information, je peux vous aider à trouver la bonne façon de le fixer aux termes de cet article. (BTW: j'aime cet article! il est sauvé mes fesses à quelques reprises.)OriginalL'auteur Kibbee | 2009-09-17
Vous devez vous connecter pour publier un commentaire.
J'ai eu des cas de ce genre dans les vieilles installations wordpress avec le problème étant que les données lui-même était déjà en UTF-8 dans un Latin1 base de données (en raison de WP jeu de caractères par défaut). Cela signifie qu'il n'y a pas de réel besoin pour la conversion des données, mais la ddbb et les formats de tableau.
Dans mon expérience, les choses se foiré quand faire le dump que je comprends, MySQL va utiliser le client du jeu de caractères par défaut qui, dans de nombreux cas, est maintenant en UTF-8.
Donc, assurez-vous que l'exportation avec le même codage des données est très important. En cas de Latin1 DDBB avec l'encodage UTF-8 codage:
Puis remplacez le Latin1 références dans l'exportation de vidage avant de réimportation d'une nouvelle base de données en UTF-8. Sorte de:
Dans mon cas ce lien a été d'une grande aide.
Commenté ici en espagnol.
replace "latin1" "utf8mb4" <dump.latin1.sql >dump.utf8.sql
à faire tout ce que l'utilisation de la table de l'UTF-8. NOTE toutefois que "latin1" ne pas se produire n'importe où ailleurs dans le dump (contenu du champ) et, juste pour être certain, j'ai vérifié le diff avant de l'importer.OriginalL'auteur luison
Si elle est à peine encore effective pour l'OP, j'ai justement trouvé une solution dans la documentation de MySQL pour ALTER TABLE. Je poste ici juste pour référence future:
Avec contenu mixte, cela ne fonctionne pas: Code: 1366 État SQL: HY000 --- Incorrect de la chaîne de valeur: '\xE4chste...' pour la colonne 'kommentar' à la ligne 1
OriginalL'auteur newtover
LOAD DATA INFILE vous permet de définir l'encodage d'un fichier est supposé être dans:
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
Oui! C'est l'option: [JEU de CARACTÈRES charset_name]
OriginalL'auteur Vladislav Rastrusny
J'ai écrit que http://code.google.com/p/mysqlutf8convertor/ pour l'amérique latine de la Base de données en UTF-8 Base de données. Toutes les tables et un champ pour modifier le format UTF-8.
OriginalL'auteur saturngod
Conversion latin1 pour de l'utf-8 n'est pas ce que vous voulez faire, vous sorte de besoin le contraire.
Si ce qui s'est vraiment passé:
Ce que vous devez faire maintenant est:
OriginalL'auteur DigitalRoss
J'ai récemment terminé un shell script qui automatise le processus de conversion. Il est également configurable pour écrire des filtres personnalisés pour n'importe quel texte que vous souhaitez remplacer ou de les supprimer. Pour exemple : suppression des caractères HTML etc. Tableau des listes blanches et des listes noires sont également possibles. Vous pouvez le télécharger sur sourceforge: https://sourceforge.net/projects/mysqltr/
OriginalL'auteur user2192857
Essayez ceci:
1) Dump de votre DB
2) dépotoir à ciel Ouvert.sql dans l'éditeur de texte et remplacez toutes les occurences de "nom du SET latin1" par "SET NAMES utf8"
3) Créer une nouvelle base de données et de restauration de votre fichier de vidage
OriginalL'auteur François