MySql 5.1.x:插入select ..编码字符串

时间:2010-12-04 19:30:07

标签: mysql encoding insert

我有2个表具有相同的DEFAULT CHARSET = latin1 如果我使用命令'Insert into()Select()'将一些数据从一个表复制到另一个表,MySql将对这些字符串进行编码。 例如:

2461/P/J- -- RESO N° RM10成为2461/P/J- -- RESO N° RM10 请注意从°°

的转换

怎么能避免这个? tnx in advice。

2 个答案:

答案 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实体转换。