一、背景描述
公司使用kettle进行数据的迁移,需要从oracle数据库迁移到mysql数据库,于是用kettle进行数据迁移。
二、问题描述
在进行java代码调用job文件执行转换时,导入到mysql的数据库的中文字体,其中一个表出现乱码,而其它表没有问题。
三、尝试解决
在网上看到很多关于乱码的问题,无怪乎下面几种方式:
1. 数据库连接,选项中配置
characterEncoding=utf8
2.在spoon.bat文件中加入字符集配置
"-Dfile.encoding=UTF-8"
这种情况,实测是可以解决乱码的情况的。但我需要用java调用kettle的job,所以放弃这种方案。
3. 数据连接,高级中配置
set names utf8;
目前找到了三种解决方案,但都不能解决我的问题。
四、查询字符集之间区别,找乱码的根源
通过黑马Java磊哥的视频,了解了各种字符集之间的区别,发现我所谓的乱码,其它是中文以“UTF-8”的形式编码,把它转变成“GBK”造成的。
五、粗心造成的问题
转了一大圈,发现有可能是一个低级错误造成的。所以一点点地检查,终于,让我发现了这个。
我在“表输入”时,不小心勾选了“允许简易转换”,把它去掉,完美解决。
允许简易转换:在旧版本中使用(<6.0),允许延迟转换,而在新版本中,
不要勾选此按钮。