我正在使用Navicat11.0.8,我试图使用查询将值插入到表中,但是当我尝试使用查询插入值时,它会工作,但字符编码却搞砸了!
正如您在我的代码中看到的那样,表是“table”,我正在插入一个ID、VNUM和一个名称。VNUM是'体字‘,名称是’Vers‘。
INSERT INTO table VALUES ('1', '体字', 'Versão');它没有在VNUM上显示“体字”,而在名称上显示“Vers”,而是显示“VNUM-”和“VersÔ。
这对我来说很糟糕,因为我试图插入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'); 仍在放映“0.5”和“Vers圣保罗£”。
如果我手动编辑表格,它就会显示正确!但我不打算编辑5000+行..。
发布于 2015-04-10 21:17:58
it shows '体å—' and 'Versão'. --听起来你有SET NAMES latin1。做
SET NAMES utf8;连接后和INSERTing之前。这将告诉mysqld客户端正在使用什么编码。
通过执行SELECT col, HEX(col) ...验证存储的数据体字 is E4BD93E5AD97的utf8 (或utf8mb4)十六进制。解释与latin1相同的字节会给出体å—;
utf8可以处理这些问题,加上ã;我不知道big5是否能处理。
实际上,我建议您使用utf8mb4而不是utf8。这是为了防止你遇到一些4字节的汉字.
如果您仍然需要将latin1列更改为utf8mb4,则使用看我的博客,它讨论“2步更改”,但使用BINARY或BLOB (而不是big5)作为中间操作。
https://stackoverflow.com/questions/29548161
复制相似问题