gpt4 book ai didi

mysql - Navicat (MySQL) 字符编码错误

转载 作者:行者123 更新时间:2023-11-29 00:01:35 28 4
gpt4 key购买 nike

我正在使用 Navicat 11.0.8,我正在尝试使用查询将值插入到表中,但是当我尝试使用查询插入值时,它可以工作,但字符编码被搞乱了!

正如您在我的代码中所见,表格是“表格”,我正在插入一个 ID、VNUM 和一个名称。 VNUM 是“体字”,名称是“Versão”。

INSERT INTO table VALUES ('1', '体字', 'Versão');

不是在 VNUM 上显示“体字”,在 NAME 上显示“Versão”,而是显示“体嗔和“Versã£o”。

这对我来说非常糟糕,因为我试图插入包含大量信息的 5000 多行。

我尝试使用这些命令设置表格的字符编码:

ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
&
ALTER TABLE table CONVERT TO CHARACTER SET big5 COLLATE big5_chinese_ci;
&
ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

我也尝试过删除我的表并创建一个字符编码已经为 utf-8 的新表并发送值..

SET FOREIGN_KEY_CHECKS=0;

DROP TABLE IF EXISTS `table`;
CREATE TABLE `table` (
`vnum` int(11) unsigned NOT NULL default '0',
`name` varbinary(200) NOT NULL default 'Noname',
`locale_name` varbinary(24) NOT NULL default 'Noname',
) ENGINE=MyISAM DEFAULT CHARSET=big5_chinese_ci;

INSERT INTO `table` VALUES ('1', '体字', 'Versão');

仍然显示“体嗔和“Versã£o”。

如果我手动编辑表格,它显示是正确的!但我不会编辑 5000 多行...

最佳答案

它显示“体嗔和“Versã£o”。 -- 听起来您有 SET NAMES latin1。做

SET NAMES utf8;

连接之后和插入之前。这告诉 mysqld 客户端正在使用什么编码。

通过执行 SELECT col, HEX(col) ... 验证存储的数据 体字 的 utf8(或 utf8mb4)十六进制是 E4BD93E5AD97。将那些 相同 字节解释为 latin1 可以得到 体å—;

utf8 可以处理这些,加上 ã;不知道big5能不能。

实际上,我建议您使用 utf8mb4 而不是 utf8。这是为了防止您遇到某些 4 字节的汉字。

如果您仍然有需要更改为 utf8mb4 的 latin1 列,see my blog ,其中讨论了“两步更改”,但使用 BINARYBLOB(不是 big5)作为中间值。

关于mysql - Navicat (MySQL) 字符编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29548161/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com