MySQL 用SQL语句查询出数据库某表中的乱码记录

时间:2021-01-25 11:12:25
某表中有两部分数据,一部分是正常的utf8编码数据,一部分是latin1编码的数据.如何在用utf8编码模式下查询出该表的乱码记录?

11 个解决方案

#1


没有办法,只能先把latin表导出后换字符集后再导入。

#2


无法查出。只有导出所有数据,在统一的字符集下重新建立表、库,再导入数据

#3


导出数据再同一编码。那导出的文件有一部分已经是乱码了啊。比如:你按照UTF8导出数据,latin1的那部分数据在文件中就是乱码了吧。再次重建数据库导出,还是一样的把。

#4


只有分次导出数据,没办法,所以字符集要统一

#5


分次导出的话,那就回到第一个问题了啊。怎么一次性查出乱码的或者是非乱码的数据。然后导出。
不会在数据库里面找那些记录是乱码的吧,如果不是连续的数据量又很大怎么找?

#6


你数据都乱码,是没办法查询出来的,必须统一编码情况下,或者在无乱码情况。

#7


引用 6 楼 zy205817 的回复:
你数据都乱码,是没办法查询出来的,必须统一编码情况下,或者在无乱码情况。


表中有部分是乱码哈。目前就是想把乱码那部分转成正常编码的。如果无乱码就不存在这个问题了。

#8


那你是否可以根据条件,把乱码数据导出临时表,修改表类型,重新再导入表中?

#9


我总结哈。
乱码数据的来源:
乱码数据的出现是由于在插入数据库时没有指定编码集,使用了默认的Latin1造成的(正常情况是需要指定为utf8的)。
问题的主要目的:
如何将数据库中已经是乱码的数据恢复成正常编码数据的问题。
目前的现状:
数据库表中存在的数据由两部分组成,一部分是正常编码(utf8)的正常数据,另外一部分是乱码数据(在utf8下)--该部分就是插入是未指定utf8编码的数据。
因此修改数据库编码方式为Latin1时乱码数据恢复正常,而utf8数据会成乱码。
已经尝试过的修复方式:
A:通过UTF8编码范围来正则匹配(无效)。
人工查找这种都知道就不提了。

#10


引用 8 楼 zy205817 的回复:
那你是否可以根据条件,把乱码数据导出临时表,修改表类型,重新再导入表中?


什么条件?人工人肉观察得出的条件?

#11


 MySQL would store new values in the column using latin1, and the column will contain a mix of sjis and latin1 values and cannot be converted properly.
官方有这么一句话,无解啊

#1


没有办法,只能先把latin表导出后换字符集后再导入。

#2


无法查出。只有导出所有数据,在统一的字符集下重新建立表、库,再导入数据

#3


导出数据再同一编码。那导出的文件有一部分已经是乱码了啊。比如:你按照UTF8导出数据,latin1的那部分数据在文件中就是乱码了吧。再次重建数据库导出,还是一样的把。

#4


只有分次导出数据,没办法,所以字符集要统一

#5


分次导出的话,那就回到第一个问题了啊。怎么一次性查出乱码的或者是非乱码的数据。然后导出。
不会在数据库里面找那些记录是乱码的吧,如果不是连续的数据量又很大怎么找?

#6


你数据都乱码,是没办法查询出来的,必须统一编码情况下,或者在无乱码情况。

#7


引用 6 楼 zy205817 的回复:
你数据都乱码,是没办法查询出来的,必须统一编码情况下,或者在无乱码情况。


表中有部分是乱码哈。目前就是想把乱码那部分转成正常编码的。如果无乱码就不存在这个问题了。

#8


那你是否可以根据条件,把乱码数据导出临时表,修改表类型,重新再导入表中?

#9


我总结哈。
乱码数据的来源:
乱码数据的出现是由于在插入数据库时没有指定编码集,使用了默认的Latin1造成的(正常情况是需要指定为utf8的)。
问题的主要目的:
如何将数据库中已经是乱码的数据恢复成正常编码数据的问题。
目前的现状:
数据库表中存在的数据由两部分组成,一部分是正常编码(utf8)的正常数据,另外一部分是乱码数据(在utf8下)--该部分就是插入是未指定utf8编码的数据。
因此修改数据库编码方式为Latin1时乱码数据恢复正常,而utf8数据会成乱码。
已经尝试过的修复方式:
A:通过UTF8编码范围来正则匹配(无效)。
人工查找这种都知道就不提了。

#10


引用 8 楼 zy205817 的回复:
那你是否可以根据条件,把乱码数据导出临时表,修改表类型,重新再导入表中?


什么条件?人工人肉观察得出的条件?

#11


 MySQL would store new values in the column using latin1, and the column will contain a mix of sjis and latin1 values and cannot be converted properly.
官方有这么一句话,无解啊