解析CSV时出现ZWNBSP

Kos*_*osh 6 java csv junit special-characters

我有一个 CSV 文件,我想检查它是否包含应有的所有数据。但看起来 ZWNBSP 出现在第一个字符串中第一个列名称的开头。

我的简化代码是

@Test
void parseCsvTest() throws Exception {
    Configuration.holdBrowserOpen = true;
    ClassLoader classLoader = getClass().getClassLoader();
    try (
            InputStream inputStream = classLoader.getResourceAsStream("files/csv_example.csv");
            CSVReader reader = new CSVReader(new InputStreamReader(inputStream))
    ) {
        List<String[]> content = reader.readAll();
        var csvStrings0line = content.get(0);
        var csv1stElement = csvStrings0line[0];
        var csv1stElementShouldBe = "Timestamp";
        assertEquals(csv1stElementShouldBe,csv1stElement);
Run Code Online (Sandbox Code Playgroud)

我的 CSV 包含

"Timestamp","Source","EventName","CountryId","Platform","AppVersion","DeviceType","OsVersion"
"2022-05-02T14:56:59.536987Z","courierapp","order_delivered_sent","643","ios","3.11.0","iPhone 11","15.4.1"
"2022-05-02T14:57:35.849328Z","courierapp","order_delivered_sent","643","ios","3.11.0","iPhone 8","15.3.1"
Run Code Online (Sandbox Code Playgroud)

我的测试失败了

expected: <Timestamp> but was: <Timestamp>
Expected :Timestamp
Actual   :Timestamp
<Click to see difference>
Run Code Online (Sandbox Code Playgroud)

单击查看差异显示实际文本的开头有一个 ZWNBSP。

在此输入图像描述

将我的文本复制粘贴到用于显示不可打印的 unicode 字符的在线工具https://www.soscisurvey.de/tools/view-chars.php在行尾仅显示 CR LF,没有 ZWNBSP。

但它从哪里来呢?

mlo*_*ber 6

这是一个 BOM 字符。您可以自行删除它或使用其他几种解决方案(例如,请参阅/sf/answers/342859541/ )