mysql和navicat编码不一样,怎么破

时间:2022-05-16 22:35:04
mysql和navicat编码不一样,怎么破mysql和navicat编码不一样,怎么破
网上的方法都试了,mysql把gbk改成了utf8成功了,但是navicat那里还是死活不变,后台读的中文也乱码,求大神解决,愿送上所有分数

4 个解决方案

#1


在mysql命令行中,先选中数据库,比如use test
然后执行charset utf8  (没有-)
然后查询已经存入的表中的汉字记录。看看有没有乱码,如果没有乱码说明存入数据库的就是utf8

如果是乱码,就不乱的切换编码(charset gbk, charset gb2312.....),直到select显示的结果不现乱码,
假如你设置charset gbk后,select 的汉字不是乱码,说明你的数据库中已经存了gbk的汉字了,那没办法,数据库中的数据只能删除了重新录入。


要充分理解mysql字符集有很多环节的概念,最重要的3个:
database:就是数据库内部存储字符串用的编码
connect :就是通过socket与mysql通信时的网络编码;
client:mysql命令终端和navicat都属于客户端,后台那个mysql进程才属于服务端(server);
以上3个字符集必须都一样。如果database和connect都是utf8,而client是gbk,那么你再通过utf8的编码去select出来,肯定是乱码。

而你create table时指定了utf8,而windows下的mysql client默认是gbk,这样是很有可能出你那个问题的。

#2


引用 20 楼 chinese120 的回复:
Quote: 引用 18 楼 actionaction0717 的回复:

在后台查询的时候在设置下UTF-8编码试试

我后台重新设置个了编码String name =new String(listUser.get(0).getUsername().getBytes("ISO-8859-1"),"utf-8");例如这样,读取出来之后能转回中文,但是jsp那边一样是乱码,页面也设置了utf-8了,而且,我不可能是每个方法数据都这样转,所以问题不在这里,java和jsp文件都设置了utf-8默认编码


根据你另一个贴子的情况。
初步判断:你最早的jsp是ISO-8859-1,数据库是utf8,然后通过jsp录入数据,结果查询发现乱码,又把jsp改为uft8,发现还是乱码。
其次一旦用不正确的编码将数据录入的数据库,那么再怎么调整,也得不到想要的编码了。没有办法,只能把数据删了重新导入。

#3


引用 2 楼 trocp 的回复:
Quote: 引用 20 楼 chinese120 的回复:

Quote: 引用 18 楼 actionaction0717 的回复:

在后台查询的时候在设置下UTF-8编码试试

我后台重新设置个了编码String name =new String(listUser.get(0).getUsername().getBytes("ISO-8859-1"),"utf-8");例如这样,读取出来之后能转回中文,但是jsp那边一样是乱码,页面也设置了utf-8了,而且,我不可能是每个方法数据都这样转,所以问题不在这里,java和jsp文件都设置了utf-8默认编码


根据你另一个贴子的情况。
初步判断:你最早的jsp是ISO-8859-1,数据库是utf8,然后通过jsp录入数据,结果查询发现乱码,又把jsp改为uft8,发现还是乱码。
其次一旦用不正确的编码将数据录入的数据库,那么再怎么调整,也得不到想要的编码了。没有办法,只能把数据删了重新导入。


mysql和navicat编码不一样,怎么破mysql和navicat编码不一样,怎么破mysql和navicat编码不一样,怎么破mysql和navicat编码不一样,怎么破mysql和navicat编码不一样,怎么破

大神,我把数据库和navicat都卸载了重装,数据库也完全删除了,我把编码格式全部都设置了utf-8,再在navicat那边录入数据,数据格式也是utf8,但是情况没有改善,返回来的还是乱码,我在navicat那边查编码却和mysql不一样,不知道为啥。。

#4


你私信我,我给你远程看看。

#1


在mysql命令行中,先选中数据库,比如use test
然后执行charset utf8  (没有-)
然后查询已经存入的表中的汉字记录。看看有没有乱码,如果没有乱码说明存入数据库的就是utf8

如果是乱码,就不乱的切换编码(charset gbk, charset gb2312.....),直到select显示的结果不现乱码,
假如你设置charset gbk后,select 的汉字不是乱码,说明你的数据库中已经存了gbk的汉字了,那没办法,数据库中的数据只能删除了重新录入。


要充分理解mysql字符集有很多环节的概念,最重要的3个:
database:就是数据库内部存储字符串用的编码
connect :就是通过socket与mysql通信时的网络编码;
client:mysql命令终端和navicat都属于客户端,后台那个mysql进程才属于服务端(server);
以上3个字符集必须都一样。如果database和connect都是utf8,而client是gbk,那么你再通过utf8的编码去select出来,肯定是乱码。

而你create table时指定了utf8,而windows下的mysql client默认是gbk,这样是很有可能出你那个问题的。

#2


引用 20 楼 chinese120 的回复:
Quote: 引用 18 楼 actionaction0717 的回复:

在后台查询的时候在设置下UTF-8编码试试

我后台重新设置个了编码String name =new String(listUser.get(0).getUsername().getBytes("ISO-8859-1"),"utf-8");例如这样,读取出来之后能转回中文,但是jsp那边一样是乱码,页面也设置了utf-8了,而且,我不可能是每个方法数据都这样转,所以问题不在这里,java和jsp文件都设置了utf-8默认编码


根据你另一个贴子的情况。
初步判断:你最早的jsp是ISO-8859-1,数据库是utf8,然后通过jsp录入数据,结果查询发现乱码,又把jsp改为uft8,发现还是乱码。
其次一旦用不正确的编码将数据录入的数据库,那么再怎么调整,也得不到想要的编码了。没有办法,只能把数据删了重新导入。

#3


引用 2 楼 trocp 的回复:
Quote: 引用 20 楼 chinese120 的回复:

Quote: 引用 18 楼 actionaction0717 的回复:

在后台查询的时候在设置下UTF-8编码试试

我后台重新设置个了编码String name =new String(listUser.get(0).getUsername().getBytes("ISO-8859-1"),"utf-8");例如这样,读取出来之后能转回中文,但是jsp那边一样是乱码,页面也设置了utf-8了,而且,我不可能是每个方法数据都这样转,所以问题不在这里,java和jsp文件都设置了utf-8默认编码


根据你另一个贴子的情况。
初步判断:你最早的jsp是ISO-8859-1,数据库是utf8,然后通过jsp录入数据,结果查询发现乱码,又把jsp改为uft8,发现还是乱码。
其次一旦用不正确的编码将数据录入的数据库,那么再怎么调整,也得不到想要的编码了。没有办法,只能把数据删了重新导入。


mysql和navicat编码不一样,怎么破mysql和navicat编码不一样,怎么破mysql和navicat编码不一样,怎么破mysql和navicat编码不一样,怎么破mysql和navicat编码不一样,怎么破

大神,我把数据库和navicat都卸载了重装,数据库也完全删除了,我把编码格式全部都设置了utf-8,再在navicat那边录入数据,数据格式也是utf8,但是情况没有改善,返回来的还是乱码,我在navicat那边查编码却和mysql不一样,不知道为啥。。

#4


你私信我,我给你远程看看。