【发布时间】:2023-02-16 13:52:51
【问题描述】:
我有一个 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>
点击see difference可以看到在Actual文本的开头有一个ZWNBSP。
将我的文本复制粘贴到用于显示不可打印的 unicode 字符的在线工具 https://www.soscisurvey.de/tools/view-chars.php 仅在行尾显示 CR LF,没有 ZWNBSP。
但它从何而来?
【问题讨论】:
-
改为使用十六进制编辑器打开它。该字符很可能在文件中(或者您是否建议有一种机制可以无缘无故地插入随机字符?),并且当您在线复制它时它会被删除(仅依靠在线工具是个坏主意)。
标签: java csv junit special-characters