【问题标题】:AWS Datapipeline - issue with accented charactersAWS Datapipeline - 重音字符问题
【发布时间】:2017-01-22 10:32:25
【问题描述】:

我是 AWS 数据管道的新手。我创建了一个成功的数据管道,将所有内容从 RDS 拉到 S3 存储桶。一切正常。我在 S3 存储桶中看到了我的 .csv 文件。但我在我的表中存储西班牙名称,在 csv 中我看到“Garc�a”而不是“García”

【问题讨论】:

    标签: mysql amazon-web-services amazon-rds amazon-data-pipeline


    【解决方案1】:

    看起来使用了错误的代码页。只需参考正确的代码页,就可以了。以下主题可能会有所帮助:Text files uploaded to S3 are encoded strangely?

    【讨论】:

    • S3 文件是动态生成的。我需要一个解决方案来在数据管道中修复它。
    • 管道传输是否改变了您的数据?这没有任何意义,但我可能是错的。通过使用错误的代码页(根据您的需要),您的导出或导入过程会误解您的数据。
    • 我的数据没问题。我的 api 工作正常,服务网站也很好。我正在尝试获取可下载的 csv,这给我带来了麻烦。 S3 也不是问题。
    【解决方案2】:

    AWS DataPipeline 使用 Java 实现,并使用 JDBC(Java 数据库连接)驱动程序(具体而言,在您的情况下,MySQL Connector/J 用于 MySQL)连接到数据库。根据文档Using Character Sets and Unicode部分,连接器使用的字符集是根据RDS/MySQL服务器上的character_set_server系统变量自动确定的,默认设置为latin1

    如果此设置对您的应用程序不正确(在 MySQL 客户端中运行 SHOW VARIABLES LIKE 'character%'; 以确认),您有两个选项来纠正此问题:

    1. 在您的 RDS/MySQL 服务器上将 character_set_server 设置为 utf8。要从 RDS 控制台永久进行此更改,请参阅 Modifying Parameters in a DB Parameter Group 了解说明。
    2. 在您的 DataPipeline 配置中传递额外的 JDBC 属性以覆盖 JDBC 连接使用的字符集。对于这种方法,请将以下 JDBC 属性添加到您的 RdsDatabaseJdbcDatabase 对象(请参阅 properties reference):

      "jdbcProperties": "useUnicode=true,characterEncoding=UTF-8"

    【讨论】:

    • 我对将多个属性传递给jdbcProperties 的语法不是 100% 有信心——文档只说“将为此设置为 jdbc 连接上的属性的 A=B 对数据库”。相反,它可能是useUnicode=true&characterEncoding=UTF-8 或完全不同的东西。如果您尝试此选项,请告诉我任何一种形式是否有效。
    • 你是对的。它给了我一个错误-连接属性“allowMultiQueries”只接受以下形式的值:“真”、“假”、“是”或“否”。值 'true,useUnicode=true,characterEncoding=UTF-8' 不在此集合中。
    • 也不正确。连接属性“allowMultiQueries”仅接受以下形式的值:“true”、“false”、“yes”或“no”。值 'true&useUnicode=true&characterEncoding=UTF-8' 不在此集合中。
    • 好的,这里还有两个语法思路可以尝试: 1. 多个jdbcProperties 键,每个属性对应一个:"jdbcProperties": "useUnicode=true", "jdbcProperties": "characterEncoding=UTF-8"; 2. 将数组传递给jdbcProperties:"jdbcProperties": ["useUnicode=true", "characterEncoding=UTF-8"]。让我知道是否可行。
    • 按照您的说明添加。没有错误。谢谢你。但是......结果是相同的“Gonz�lez”:(
    【解决方案3】:

    这个问题和Text files uploaded to S3 are encoded strangely?有点相似。如果是这样,请在此处参考我的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-07
      • 2020-12-09
      • 2011-06-14
      • 2013-07-12
      • 2020-11-05
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多