junit 解析CSV时出现ZWNBSP

gwo2fgha  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(443)

我有一个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);

我的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"

我的测试失败了

expected: <Timestamp> but was: <Timestamp>
Expected :Timestamp
Actual   :Timestamp
<Click to see difference>

点击查看差异显示在Actual文本的开头有一个ZWNBSP。

将我的文本复制粘贴到用于显示不可打印的Unicode字符的在线工具https://www.soscisurvey.de/tools/view-chars.php中,在行的末尾只显示CR LF,而不显示ZWNBSP。
但它是从哪里来的呢?

sgtfey8w

sgtfey8w1#

这是一个BOM字符。您可以自己删除它或使用其他几种解决方案(例如,请参见https://stackoverflow.com/a/4897993/1420794

相关问题