如何使用 uniVocity-parsers 处理不可打印的字符

how to use uniVocity-parsers to process non-printable character

我想使用 Java 和 uniVocity-parsers 来解析由 mysql select into outfile 生成的 csv 数据。

现在遇到一种处理non-printable字符的情况! mysql table包含bit(1)列当使用 select into outfile 将其数据保存到文件中时,我发现 bit(1) 列数据变为非 printable 字符。使用 uniVocity-parsers 获取线数据时,我得到 bit(1) 列的 null 值。我希望获得 bit(1) 列的真实数据。我应该怎么办 ?

这里的问题是 MySQL 将 bit(1) 值作为字符 \u0000\u0001 导出,默认情况下解析器会修剪所有值(意思是任何字符 <= ' ')。修剪过程将消除 \u0000\u0001,因为它们的整数表示分别是 01,而空白字符的整数表示 ' '32.

您只需配置该解析器以防止修剪值:

    settings.trimValues(false);

此外,您提供的文件中有以 \r\n 结尾的行。如果您在 OSX 或 Linux 上解析它,您需要明确定义行结尾:

    settings.getFormat().setLineSeparator("\r\n");

或启用自动检测:

    settings.setLineSeparatorDetectionEnabled(true);

希望这对您有所帮助