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

发布于 2024-10-05 15:42:22 字数 290 浏览 3 评论 0原文

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

2461/P/J- -- RESO N° RM10 变为 2461/P/J- -- RESO N° RM10 请注意从 °° 的转换

如何避免这种情况? tnx 的建议。

i have 2 table with the same DEFAULT CHARSET=latin1
If i copy some data from one table to the another with the command 'Insert into () Select ()', MySql encode the strings.
Example:

2461/P/J- -- RESO N° RM10 became 2461/P/J- -- RESO N° RM10
note the conversion from ° to °

How can avoid this?
tnx in advice.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

明天过后 2024-10-12 15:42:22

当我尝试时,这种情况不会发生(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 |
+----+----------------------------+

That doesn't happen when I try it (MySQL 5.1.41). Are you doing this directly from the MySQL console, or are you perhaps doing it via the MySQL API - perhaps from PHP?

Example:

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 |
+----+----------------------------+
你是我的挚爱i 2024-10-12 15:42:22

你能验证一下原表中的数据吗?如果您遇到字符集编码问题,您将看到垃圾字符等,而不是 HTML 实体。正如您的示例所示,MySQL 不会将 HTML/XML 实体转换为 HTML/XML 实体。

Can you verify the data in the original table? If you were having charset encoding issues, you would be seeing gargage characters and the like, not HTML entites. MySQL does not convert from/to HTML/XML entities as your example suggests.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文