首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Navicat (MySQL)字符编码错误

Navicat (MySQL)字符编码错误
EN

Stack Overflow用户
提问于 2015-04-09 20:18:28
回答 1查看 1.9K关注 0票数 1

我正在使用Navicat11.0.8,我试图使用查询将值插入到表中,但是当我尝试使用查询插入值时,它会工作,但字符编码却搞砸了!

正如您在我的代码中看到的那样,表是“table”,我正在插入一个ID、VNUM和一个名称。VNUM是'体字‘,名称是’Vers‘。

代码语言:javascript
复制
INSERT INTO table VALUES ('1', '体字', 'Versão');

它没有在VNUM上显示“体字”,而在名称上显示“Vers”,而是显示“VNUM-”和“VersÔ。

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

我尝试使用以下命令设置表的字符编码:

代码语言:javascript
复制
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,并发送值。

代码语言:javascript
复制
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+行..。

EN

回答 1

Stack Overflow用户

发布于 2015-04-10 21:17:58

it shows '体字' and 'Versão'. --听起来你有SET NAMES latin1。做

代码语言:javascript
复制
SET NAMES utf8;

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

通过执行SELECT col, HEX(col) ...验证存储的数据体字 is E4BD93E5AD97的utf8 (或utf8mb4)十六进制。解释与latin1相同的字节会给出体字

utf8可以处理这些问题,加上ã;我不知道big5是否能处理。

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

如果您仍然需要将latin1列更改为utf8mb4,则使用看我的博客,它讨论“2步更改”,但使用BINARYBLOB (而不是big5)作为中间操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29548161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档