308 Star 2.3K Fork 814

AE86 / DBSyncer

 / 详情

mysql8表导入sqlserver2008R2后,sqlserver表nvarchar字段内容为乱码

已完成
创建于  
2021-11-26 13:12

输入图片说明

请问怎么操作可以解决这个问题,感谢

评论 (10)

cl5 创建了任务
cl5 修改了描述
cl5 修改了标题
展开全部操作日志

输入图片说明

请问在哪修改可以解决这个问题 ?
将mysql连接字符串修改utf8或gbk后,数据写入sqlserever中文都是乱码

AE86 任务状态待办的 修改为进行中

CREATE TABLE er_shopdailysale (
recKey bigint(20) unsigned NOT NULL AUTO_INCREMENT,
groupId varchar(8) NOT NULL,
groupName varchar(64) NOT NULL,
locId varchar(8) NOT NULL,
locName varchar(64) NOT NULL,
bizDate datetime NOT NULL,
startTime datetime NOT NULL,
endTime datetime NOT NULL,
...省略字段
PRIMARY KEY (recKey)
) ENGINE=InnoDB AUTO_INCREMENT=173428 DEFAULT CHARSET=utf8

AE86 任务状态进行中 修改为已完成

cmd日志显示:
[11:56:43:204] [ERROR] - org.dbsyncer.connector.sqlserver.SqlServerConnectorMapp
er.execute(SqlServerConnectorMapper.java:44) - Setter type "-3" is not supported
.
[11:56:43:208] [ERROR] - org.dbsyncer.connector.database.AbstractDatabaseConnect
or.writer(AbstractDatabaseConnector.java:191) - SQL:UPDATE my_user SET id=?,name
=?,age=?,money=?,phone=?,create_date=?,update_time=?,remark=?,rid=?,ss=?,img=?,t
int=? WHERE id=?, DATA:{ss=1, update_time=2021-12-01T11:42:51.000+0800, img=null
, money=1.0, phone=1, name=天津66, remark=[-26, -75, -117, -24, -81, -107], id=1,
create_date=2021-12-01T08:00:00.000+0800, rid=1, tint=1, age=1}, ERROR:Setter ty
pe "-3" is not supported.
d.
[11:56:43:220] [WARN] - org.dbsyncer.connector.database.AbstractDatabaseConnecto
r.writer(AbstractDatabaseConnector.java:203) - my_user��ִ��UPDATEʧ��, ����ִ��INS
ERT, {ss=1, update_time=2021-12-01T11:42:51.000+0800, img=null, money=1.0, phone
=1, name=天津66, remark=[-26, -75, -117, -24, -81, -107], id=1, create_date=2021-1
2-01T08:00:00.000+0800, rid=1, tint=1, age=1}
ge=1}
[11:56:43:230] [ERROR] - org.dbsyncer.connector.sqlserver.SqlServerConnectorMapp
er.execute(SqlServerConnectorMapper.java:44) - Setter type "-3" is not supported
.
[11:56:43:234] [ERROR] - org.dbsyncer.connector.database.AbstractDatabaseConnect
or.writer(AbstractDatabaseConnector.java:191) - SQL:INSERT INTO my_user(id, name
, age, money, phone, create_date, update_time, remark, rid, ss, img, tint) VALUE
S (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), DATA:{ss=1, update_time=2021-12-01T11:42
:51.000+0800, img=null, money=1.0, phone=1, name=天津66, remark=[-26, -75, -117, -
24, -81, -107], id=1, create_date=2021-12-01T08:00:00.000+0800, rid=1, tint=1, a
ge=1}, ERROR:Setter type "-3" is not supported.
d.
[11:56:50:001] [INFO] - org.dbsyncer.manager.puller.impl.IncrementPuller$Abstrac
tListener.flushEvent(IncrementPuller.java:199) - {fileName=mysql-bin.000003, pos
ition=1647}

输入图片说明

原因定位:【Windows默认编码与DBSyncer启动脚本编码不一致】

bin/startup.bat脚本中默认编码参数为GBK:-Dfile.encoding=GBK

只需保证Windows和startup.bat脚本编码参数一致。比如-Dfile.encoding=UTF-8

输入图片说明

如何查看Windows属于哪种编码?

1、win+R 快捷键打开运行窗口输入cmd回车,再输入chcp命令回车,即显示当前系统编码
输入图片说明
chcp命令

案例1

# Windows GBK编码=936
C:\Users\Administrator>chcp
活动代码页: 936

案例2

# Windows UTF-8编码=65001
C:\Users\Administrator>chcp
活动代码页: 65001

编码对应表

下表列出了所有支持的代码页及其国家(地区)或者语言:

代码页 国家(地区)或语言
437 美国
708 阿拉伯文(ASMO 708)
720 阿拉伯文(DOS)
850 多语言(拉丁文 I)
852 中欧(DOS) - 斯拉夫语(拉丁文 II)
855 西里尔文(俄语)
857 土耳其语
860 葡萄牙语
861 冰岛语
862 希伯来文(DOS)
863 加拿大 - 法语
865 日耳曼语
866 俄语 - 西里尔文(DOS)
869 现代希腊语
874 泰文(Windows)
932 日文(Shift-JIS)
936 中国 - 简体中文(GB2312)
949 韩文
950 繁体中文(Big5)
1200 Unicode
1201 Unicode (Big-Endian)
1250 中欧(Windows)
1251 西里尔文(Windows)
1252 西欧(Windows)
1253 希腊文(Windows)
1254 土耳其文(Windows)
1255 希伯来文(Windows)
1256 阿拉伯文(Windows)
1257 波罗的海文(Windows)
1258 越南文(Windows)
20866 西里尔文(KOI8-R)
21866 西里尔文(KOI8-U)
28592 中欧(ISO)
28593 拉丁文 3 (ISO)
28594 波罗的海文(ISO)
28595 西里尔文(ISO)
28596 阿拉伯文(ISO)
28597 希腊文(ISO)
28598 希伯来文(ISO-Visual)
38598 希伯来文(ISO-Logical)
50000 用户定义的
50001 自动选择
50220 日文(JIS)
50221 日文(JIS-允许一个字节的片假名)
50222 日文(JIS-允许一个字节的片假名 - SO/SI)
50225 韩文(ISO)
50932 日文(自动选择)
50949 韩文(自动选择)
51932 日文(EUC)
51949 韩文(EUC)
52936 简体中文(HZ)
65000 Unicode (UTF-7)
65001 Unicode (UTF-8)

感谢您抽出时间排查原因哈。

两个mysql8 之间同步一样还是乱码 已经按照上面方式操作了也不行
输入图片说明
输入图片说明

全量同步没有乱码增量同步才会乱码
输入图片说明

进群,远程看看

虽然电脑显示936 但是我把bat里面的改成utf8就正常了,但是黑窗口的日志输出乱码同步的数据不乱码

我PGSQL 增量同步到到 PGSQL 也遇到这个问题。
电脑显示936,但我也是把bat文件里改成utf-8就正常了

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(4)
376718 ghi 1660456020 5156797 rv xiaoyang 1705232147
Java
1
https://gitee.com/ghi/dbsyncer.git
git@gitee.com:ghi/dbsyncer.git
ghi
dbsyncer
DBSyncer

搜索帮助