从 dsv 文件中读取欧元符号时,以下代码不起作用。
CSVReader csvReader = new CSVReaderBuilder(Files.newBufferedReader(sourceFile, Charset.forName("ISO-8859-9"))).withCSVParser(csvParser).build();
上一行中使用的是否Charset
不正确?
也尝试过ISO-8859-1
,ISO-8859-15
但没有运气。
从 dsv 文件中读取欧元符号时,以下代码不起作用。
CSVReader csvReader = new CSVReaderBuilder(Files.newBufferedReader(sourceFile, Charset.forName("ISO-8859-9"))).withCSVParser(csvParser).build();
上一行中使用的是否Charset
不正确?
也尝试过ISO-8859-1
,ISO-8859-15
但没有运气。
我建议尝试使用字符集读取UTF-8
UTF-8 中的一些编码是单字节码。这可能会有所帮助。还有一个实用程序可以帮助您诊断问题。有一个名为 MgntUtils 的开源 java 库(由我编写),它具有将任何字符串转换为 unicode 序列的实用程序,反之亦然。您所要做的就是:
String codes = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence("Hello world");
它会返回字符串"\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064"
这同样适用于任何语言的任何字符串,包括特殊字符。这是文章Open Source Java library with stack trace filtering、Silent String parsing Unicode converter 和 Version comparison的链接,它解释了该库以及从何处获取它(在Maven Central和github上均可用。在文章中搜索段落:“字符串 Unicode 转换器”。
因此,当您阅读您的 String 时,请转换它,看看会发生什么。请注意,欧元符号的统一是 \u20AC