开发者社区> 问答> 正文

如何处理编码格式设置问题?

如何处理编码格式设置问题?

展开
收起
Puppet 2020-03-21 09:16:08 1053 0
1 条回答
写回答
取消 提交回答
  • 数据集成的同步任务设置编码格式后,如果数据中包括表情符,在运行任务时可能出现同步失败且产生脏数据,或同步成功但数据乱码的问题。 • 同步失败且产生脏数据 数据集成任务运行失败,且因编码问题产生脏数据,报错日志如下所示。 016-11-18 14:50:50.766 [13350975-0-0-writer] ERROR StdoutPluginCollector - 脏数据 {"exception":"Incorrect string value: '\xF0\x9F\x98\x82\xE8\xA2...' for column 'introduction' at row 1","record":[{"byteSize":8,"index":0,"rawData":9642,"type":"LONG"}, {"byteSize":33,"index":1,"rawData":"hello1 cry","type":"STRING"}, {"byteSize":8,"index":4,"rawData":0,"type":"LONG"}],"type":"writer"} 2016-11-18 14:50:51.265 [13350975-0-0-writer] WARN CommonRdbmsWriter$Task - 回滚此次写入, 采用每次写入一行方式提交:java.sql.BatchUpdateException: Incorrect string value: '\xF0\x9F\x88\xB6\xEF\xB8...' for column 'introduction' at row 1 对数据库进行编码格式设置或添加数据源时,编码未设置为utf8mb4。仅utf8mb4编码支持同步表情符,导致出现上述问题。 解决方法如下: o JDBC格式添加的数据源修改utf8mb4:jdbc:mysql://xxx.x.x.x:3306/database?com.mysql.jdbc.faultInjection.serverCharsetIndex=45。 o 实例ID形式添加数据源:在数据库名后拼接,格式为database?com.mysql.jdbc.faultInjection.serverCharsetIndex=45。 o 修改数据源的编码格式为utf8mb4。例如,在RDS控制台修改RDS的数据库编码格式。 说明 如果需要设置RDS数据源编码格式set names utf8mb4,在添加数据源时,必须使用无公网IP和连接串方式。 • 同步成功但数据乱码 出现数据同步任务虽然成功,但数据乱码情况的原因如下: o 源端的数据本身是乱码。 o 数据库和客户端的编码不一样。 o 浏览器编码不一样,导致预览失败或乱码。 解决方法如下: o 如果您的原始数据乱码,请首先处理好原始数据,再进行同步任务。 o 如果数据库和客户端编码格式不一致,请先修改编码格式。 o 如果浏览器编码和数据库或客户端编码格式不一致,请先统一编码格式,然后进行数据预览。

    2020-03-21 09:16:31
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载