navicat我用UTF-8格式运行SQL语句插入的数据为什么汉字会变成乱码

如题所述

你的数据库表或者字段的的字符集设置的不是utf8或者utf8mb4,所以存进去变成乱码了
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-12
我说下我遇到的问题吧,不知道对你有没有帮助。我也是用的Navicat,开始数据显示正常;用cmd检索数据就不显示中文;再打开Navicat也不显示中文了。最后把mysql里my.ini中字符集改成GBK就好了,原来是UTF8。
第2个回答  2017-09-22
不在于你的navicat的设置,
而在于你的数据库的设置,是否支持UTF-8?
mysql 创建数据库时指定编码很重要,很多开发者都使用了默认编码,乱码问题可是防不胜防。制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题。

网页数据一般采用UTF8编码,而数据库默认为latin 。我们可以通过修改数据库默认编码方式为UTF8来减少数据库创建时的设置,也能最大限度的避免因粗心造成的乱码问题。

我们遵循的标准是,数据库,表,字段和页面或文本的编码要统一起来
我们可以通过命令查看数据库当前编码: mysql> SHOW VARIABLES LIKE 'character%';
发现很多对应的都是 latin1,我们的目标就是在下次使用此命令时latin1能被UTF8取代。

第一阶段:
mysql设置编码命令

复制代码代码如下:

SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;

然后 mysql> SHOW VARIABLES LIKE 'character%'; 你可以看到全变为 utf8 。
但是,这只是一种假象

此种方式只在当前状态下有效,当重启数据库服务后失效。
所以如果想要不出现乱码只有修改my.ini文件,
从my.ini下手(标签下没有的添加,有的修改)
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
以上3个section都要加default-character-set=utf8,平时我们可能只加了mysqld一项。
然后重启mysql,执行
mysql> SHOW VARIABLES LIKE 'character%';
确保所有的Value项都是utf8即可。
但是可恶的事情又来了,
|character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 注意 该配置| character_set_server | latin1 无法设置成UTF8 交互时候仍然会出现乱码。

第二阶段:找到下面这东东
X:\%path%\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe
重新启动设置,将默认编码设置为utf8.这样就能达到我们所要的效果了。
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set
另外注意事项:

1、建表时加utf8,表字段的Collation可加可不加,不加时默认是utf8_general_ci了。

复制代码代码如下:

CREATE TABLE `tablename4` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`varchar1` varchar(255) DEFAULT NULL,
`varbinary1` varbinary(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

2、网页xxx.php/jsp保存时选择utf8编码,页头最好加上
header('conten-type:text/html;charset=utf-8');
在执行CRUD操作前先执行一下
mysql_query("set names utf8");

navicat我用UTF-8格式运行SQL语句插入的数据为什么汉字会变成乱码
乱码情况分析原因:1.数据库字符集是否为utf8 ,排序规则是否为utf8_general_ci;2.查看一下表结构字段的字符集是否为utf8

navicat我用UTF-8格式运行SQL语句插入的数据为什么汉字会变成乱码
你的数据库表或者字段的的字符集设置的不是utf8或者utf8mb4,所以存进去变成乱码了

为什么navicat显示的字体是乱码?
1. 确保在连接数据库时,Navicat Premium的字符集设置与数据库的字符集一致。如果不同,需要在连接配置中进行调整,以确保数据以正确的格式显示。2. 在创建新的表结构时,比如age列,如果原本应该存储数字但被误设为varchar,这可能会导致乱码。请检查并确保所有列的类型正确无误。3. 当数据量较小且包...

navicat我用UTF-8格式运行SQL语句插入的数据为什么汉字会变成乱码
不在于你的navicat的设置,而在于你的数据库的设置,是否支持UTF-8?

用Navicat for MYsql创建表,插入中文显乱码
出现乱码肯定是你现在用的编码混乱造成的 解决办法:第一步 先改数据库编码 先修改你的数据库,如果你页面用的是UTF-8编码那么你数据库内的编码也需要设置为UTF-8,每个字段都需要设置.要保持内外一致,你可以用Navicat for MySQL工具,这个工具里能看得很清除,如果表\\字段很多的话你可以导出SQL语句,然后...

navicat for mysql怎么导入中文乱码
出现乱码肯定是你现在用的编码混乱造成的 解决办法:第一步 先改数据库编码 先修改你的数据库,如果你页面用的是UTF-8编码那么你数据库内的编码也需要设置为UTF-8,每个字段都需要设置.要保持内外一致,你可以用Navicat for MySQL工具,这个工具里能看得很清除,如果表\\字段很多的话你可以导出SQL语句,...

使用soci操作mysql在插入中文时乱码怎么解决
先修改你的数据库,如果你页面用的是UTF-8编码那么你数据库内的编码也需要设置为UTF-8,每个字段都需要设置.要保持内外一致,你可以用Navicat for MySQL工具,这个工具里能看得很清除,如果表\\字段很多的话你可以导出SQL语句,然后把SQL语句中相应的编码替换例如gb2312替换成utf8,然后再重新创建一个库,创建...

sql语句导入mysql数据库乱码怎么解决
sql语句导入mysql数据库乱码解决步骤如下:1、首先要保证txt文件是用UTF8格式保存的,这里可以打开查看一下内容确认格式。2、接着使用Navicat Premium连接上数据库查看数据表是UTF8格式的。3、接着 查看数据库的格式,确保是UTF8。4、继续查看 数据库中表的列也是UTF8格式。5、查询表数据,先是空表没...

为什么navicat显示的数据是乱码
原因:转换错误导致。解决方法:重新查看内容来解决此问题。如下参考:1.打开数据库连接客户端NavicatPremium,并创建一个新的表结构,其中age列被故意设置为varchar。2.成功创建表之后,为表创建一些数据,如下所示。3.当有少量数据时,可以使用sum()函数直接求和,因为在SQL中它可以自动识别是字符串类型...

用Navicat插入 mysql 数据 插入中文时报错
把你的表的语言及字段的语言也改为gbk,数据库的语言及表的语言及字段的语言是三个不同的语言级别.你虽然改了数据库的语言,但对已建好的数据库和表不会自己改的,你可以再用navicat重新设置一下就可以了.=== sql 或者Navicat 不支持我们汉字 -=== 这是肯定支持的....

相似回答