我是AWS datapipeline的新手。我创建了一个成功的数据管道,将所有内容从RDS拉到S3存储桶。一切正常。我在S3存储桶中看到了我的.csv文件。但是我把西班牙名字存放在我的桌子里,在csv我看到“Garc�a”而不是“García”
答案 0 :(得分:2)
看起来使用了错误的代码页。只需参考正确的代码页,你应该没问题。以下主题可能会有所帮助:Text files uploaded to S3 are encoded strangely?
答案 1 :(得分:1)
AWS DataPipeline在Java中实现,并使用JDBC(Java数据库连接)驱动程序(具体而言,在您的情况下为MySQL MySQL Connector/J)连接到数据库。根据文档的Using Character Sets and Unicode部分,连接器使用的字符集是根据RDS / MySQL服务器上的character_set_server
系统变量自动确定的,该变量设置为latin1
默认值。
如果您的应用程序的此设置不正确(在MySQL客户端中运行SHOW VARIABLES LIKE 'character%';
进行确认),您有两种方法可以解决此问题:
character_set_server
设置为utf8
。要从RDS控制台永久更改此更改,请参阅Modifying Parameters in a DB Parameter Group以获取相关说明。在DataPipeline配置中传递其他JDBC属性以覆盖JDBC连接使用的字符集。对于此方法,请将以下JDBC属性添加到RdsDatabase
或JdbcDatabase
对象(请参阅properties reference):
"jdbcProperties": "useUnicode=true,characterEncoding=UTF-8"
答案 2 :(得分:0)
这个问题与Text files uploaded to S3 are encoded strangely?有点类似。如果是这样,请在那里引用我的答案。