我有2个表具有相同的DEFAULT CHARSET = latin1 如果我使用命令'Insert into()Select()'将一些数据从一个表复制到另一个表,MySql将对这些字符串进行编码。 例如:
2461/P/J- -- RESO N° RM10
成为2461/P/J- -- RESO N° RM10
请注意从°
到°
怎么能避免这个? tnx in advice。
答案 0 :(得分:0)
尝试时不会发生这种情况(MySQL 5.1.41)。您是直接从MySQL控制台执行此操作,还是通过MySQL API执行此操作 - 可能来自PHP?
示例:
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 |
+----+----------------------------+
答案 1 :(得分:0)
您可以验证原始表格中的数据吗?如果你有charset编码问题,你会看到行李字符等,而不是HTML entites。正如您的示例所示,MySQL不会从/向HTML / XML实体转换。