2010-12-04 18 views
0

J'ai 2 table avec le même DEFAULT CHARSET = latin1 Si je copie des données d'une table à l'autre avec la commande 'Insert into() Select()' , MySql encoder les chaînes. Exemple:MySql 5.1.x: insérer dans select .. chaînes d'encodage

2461/P/J- -- RESO N° RM10 est devenu 2461/P/J- -- RESO N° RM10 note la conversion de ° à °

Comment éviter cela? tnx dans le conseil.

Répondre

0

Cela ne se produit pas lorsque je l'essaie (MySQL 5.1.41). Est-ce que vous le faites directement à partir de la console MySQL, ou le faites-vous peut-être via l'API MySQL - peut-être à partir de PHP?

Exemple:

CREATE TABLE `src` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `data` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE `dst` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `data` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

INSERT INTO src (data) VALUES ('2461/P/J- -- RESO N° RM10'); 

SELECT * FROM src; 
+----+----------------------------+ 
| id | data      | 
+----+----------------------------+ 
| 1 | 2461/P/J- -- RESO N° RM10 | 
+----+----------------------------+ 

INSERT INTO dst SELECT * FROM src; 

SELECT * FROM dst; 

+----+----------------------------+ 
| id | data      | 
+----+----------------------------+ 
| 1 | 2461/P/J- -- RESO N° RM10 | 
+----+----------------------------+ 
+0

grand et complet exemple mike! je m'essaye aussi à ce test et ça passe..tout vert! Mais ... alors que se passe-t-il dans ma table? Hmmm je retenter votre exemple en utilisant mes tables et l'erreur ne se produit pas! La table est très ancienne (vient d'une base de données qui a commencé avec mysql 4.0.x ..) ... je commence à supposer que le problème réside dans la plus ancienne ligne: peut-être un autre encodage? – PadovaBoy

+0

ok une autre chose étrange se produit: je réessaye de copier seulement 1 de la rangée 'problématique' ... et cette fois aucun encodage n'arrive! Seulement quand je copie toutes les lignes. Même client et contexte (sqlyog pour windows) – PadovaBoy

0

Pouvez-vous vérifier les données dans le tableau original? Si vous rencontrez des problèmes de codage de charset, vous verrez des caractères de gargouillement et autres, et non des liens HTML. MySQL ne convertit pas d'entités HTML/XML comme le suggère votre exemple.

+0

en fait! tout ce que je peux attendre de mysql mais pas une 'conversion html' (pour cela je suis là :) – PadovaBoy