如何使用uniVocity解析器处理不可打印的字符

时间:2016-09-04 14:41:13

标签: java non-printing-characters univocity

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

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

1 个答案:

答案 0 :(得分: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);

希望这有帮助