旧SQL4数据库导入PhpMyAdmin后日文字段乱码问题求助
解决PhpMyAdmin导入日文SQL后乱码的问题
我来帮你搞定这个日文乱码的麻烦!从你的表结构和乱码情况来看,核心问题是字符集不匹配——你的日文字段指定了sjis编码,但数据库默认是latin1,加上导入时没做好编码转换,就导致了乱码。下面是一步步的解决方法:
一、先尝试直接修正现有表的字符集
首先一定要备份当前数据!然后执行下面的SQL语句,把整个表(包括所有字段)转成UTF-8mb4(推荐用这个,它支持所有日文汉字,兼容性比普通utf8更好):
ALTER TABLE `bdd` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
执行完后刷新表,看看日文内容是否正常显示。如果不行,就试试下面的导出重导方法。
二、导出重导(最稳妥的方法)
如果直接转换无效,说明原始导入时的编码已经被破坏,需要重新导出正确编码的数据再导入:
- 导出原始数据:
- 在PhpMyAdmin里找到你的旧表,选择“导出”。
- 导出格式选SQL,然后找到“字符集”选项,选择
shift_jis(也就是你的原始sjis编码),确保导出的SQL文件是正确的日文编码。
- 创建新的UTF-8mb4表:
新建一个数据库,然后执行下面的建表语句(去掉了原来的sjis字段指定,统一用utf8mb4):CREATE TABLE `bdd` ( `id` int(11) NOT NULL, `ville` varchar(50) NOT NULL DEFAULT '', `nom_fr` varchar(80) NOT NULL DEFAULT '', `nom_jp` varchar(250) NOT NULL DEFAULT '', `adr_fr` text NOT NULL, `adr_jp` varchar(3000) NOT NULL, `tel` varchar(20) NOT NULL DEFAULT '0', `plan` text NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - 导入数据:
- 选择刚才新建的表,点击“导入”,选择导出的SQL文件。
- 关键步骤:在导入页面的“字符集”下拉框里选择
shift_jis,这样PhpMyAdmin会自动把sjis编码的数据转换成utf8mb4存储,就不会乱码了。
三、后续预防措施
为了避免以后再出现类似问题,建议:
- 把PhpMyAdmin的默认连接字符集设置为
utf8mb4(在设置里找“连接字符集”选项)。 - 新建数据库和表时,统一用
utf8mb4字符集,不用再单独指定sjis这类编码,UTF-8现在是通用的国际编码,兼容性最好。
内容的提问来源于stack exchange,提问作者Hanabi
相关产品推荐
相关产品推荐

