或?使用骆驼

时间:2019-11-13 18:54:14

标签: csv apache-camel

csv文件位于S3存储桶中,我正在使用骆驼aws来使用csv文件。 但是,无论何时将csv文件加载到本地,“ï”或“?”。字符假装在第一列。

例如, 原始文件 名,姓 布莱恩·希

加载到本地后 姓,名 布莱恩·希

我已经对此链接进行了研究:R's read.csv prepending 1st column name with junk text 但是,它似乎不适用于骆驼。

如何从s3读取csv文件 使用aws-s3从s3存储桶中使用CSV文件,例如“ Exchange s3File = Consumer.receive(s3Endpoint)”,其中s3Endpoint =“ aws-s3:// keys&secret?prefix =%s&deleteAfterRead = false&amazonS3Client =#awsS3client”

1 个答案:

答案 0 :(得分:0)

字符UTF-8 BOM(十六进制EF BB BF)。因此,这是关于放置在文件开头的文件内容的元数据(因为没有“页眉”或可以将其保存到的类似位置)。

如果读取以此顺序开头的文件,但将其读取为Windows标准编码(CP1252)或ISO-8859-1,则完全可以文件内容开头的三个奇怪的字符。

为避免这种情况,您必须按照@jws注释中的建议以UTF-8和BOM识别格式读取文件。他还为this link提供了一个示例,说明如何使用BOMInputStream正确读取此类文件。

如果正确读取了文件,然后将其写回到使用CP1252等不同编码的文件中,则应删除BOM。

因此,现在的问题是您如何准确地使用Camel读取文件?如果您(或库)使用非UTF-8编码(可能默认情况下)进行了读取,则说明了为什么在文件内容中获得这些字符。