【问题标题】:Encoding Issue in Talend Open StudioTalend Open Studio 中的编码问题
【发布时间】:2014-12-08 05:31:06
【问题描述】:

我正在开展一个 Talend 项目,我们正在将数据从 1000 个 XML 文件转换为 CSV,并且我们正在从 Talend 本身创建 CSV 文件编码为 UTF-8。

但问题是某些文件是作为 UTF-8 创建的,而其中一些是作为 ASCII 创建的,我不确定为什么会发生这种情况。文件应该始终创建为 UTF。

【问题讨论】:

  • 什么告诉你你的文件是 ASCII 或 UTF8
  • 我在 Linux 系统上使用逗号file FileName
  • ASCII 是 UTF8 的有效子集。如果您的文件不包含 ASCII 字符以外的任何内容,那么即使文件输出为 UTF8,它也会被视为 ASCII。

标签: csv encoding ascii talend utf


【解决方案1】:

要强制 talend 按您的意愿获取文件,您可以在文件中添加一个额外的列(例如在 tMap 中)并在该列中设置一个 UTF-8 字符。生成的文件将采用 UTF8 格式,正如其他回复者提到的那样。

【讨论】:

    【解决方案2】:

    您可以转到您正在使用的 tFileOutputDelimited(或其他类型的 tFileOutxxx)的高级选项卡,然后选择 UTF-8 编码。

    这是执行选择的高级选项卡的图像

    我很确定 unix 文件工具会根据文件内容在某个范围内或具有特定开始(幻数)做出假设。在您的情况下,如果您生成一个完全有效的 UTF-8 文件,但您只使用 ASCII 子集,则文件实用程序可能会将其标记为 ASCII。在那种情况下,你很好,因为你有一个有效的 UTF-8 文件。 :)

    【讨论】:

    • 这实际上并没有回答问题。正如 cmets 中提到的,OP 的真正问题是 UTF8 是 ASCII 的超集。如果以 UTF8 编码的文件中没有任何非 ASCII 字符,它将被视为 ASCII(除非文件类型特别允许编码声明)。
    • @ydaetskcoR 从 OP 问题中,我了解到他需要确保他的文件以 UTF8 编码。我解释了他如何在 Talend 中做到这一点。我认为这解决了他的需求。我也明白在某些情况下(仅使用 ASCII 字符的 UTF8 文件)这两种编码无法与文件内容区分开来,但 OP 的问题不是如何判断它是否是 UTF8;他的问题是一定要生成UTF8编码的文件。
    【解决方案3】:

    如 cmets 中所述,UTF8 是 ASCII 的超集。这意味着任何 ASCII 字符的代码点在 UTF8 中都将与 ASCII 相同。

    任何识别仅包含 ASCII 字符的文件的程序都会简单地假设它是 ASCII 编码的。只有当您包含 ASCII 字符集之外的字符时,文件才能被读取程序使用的任何启发式识别。

    唯一的例外是专门声明其编码的文件类型。这包括通常以编码声明开头的 (X)HTML 和 XML。

    【讨论】:

      猜你喜欢
      • 2022-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多