开发者社区> 问答> 正文

canal同步binlog的时候blob类型存储字符串乱码问题

环境信息

canal version 1.1.14 mysql version 5.7.28-0ubuntu0.16.04.2-log

问题描述

canal同步binlog类型的字符串数据时候,客户端收到的数据是乱码的

步骤重现

复原的步骤为:

create table test_blog ( id int not null primary key auto_increment, detail blob not null );

insert into test_blog (detail) values("测试");

此时同步这条数据客户端收到的就是乱码。存储上而言,blob的数据是二进制的,如果存储ascii直接储存,如果是汉字则按照字节存储,所以这里获取出来也不应该乱码。并且无法完成从 byte 到 string的转换。

期待结果

期待得到的数据是 “测试” 而非乱码的数据

实际执行情况

乱码数据

原提问者GitHub用户liqiongfan

展开
收起
山海行 2023-04-27 19:50:48 122 0
1 条回答
写回答
取消 提交回答
  • column.getValue().getBytes("ISO-8859-1"),按这个读取为bytes,然后再转成你自己的GBK或者UTF8

    原回答者GitHub用户agapple

    2023-04-28 14:32:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PolarDB-X 2.0 全局 Binlog 与备份恢复能 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载