在Java中获取文件的编码

3

可能重复:
Java:如何确定流的正确字符集编码

用户将上传CSV文件到服务器,服务器需要检查CSV文件是否以UTF-8编码。如果是,则需要通知用户,他们上传了错误的编码文件。问题在于如何检测用户上传的文件是否为UTF-8编码?后端使用Java编写。那么有人有建议吗?

3个回答

3
至少在一般情况下,无法确定文件使用的编码方式 - 最好的方法是基于启发式算法进行合理猜测。您可以排除某些可能性,但最多只能缩小可能性而不确认任何一种。例如,大多数ISO 8859变体允许任何字节值(或字节值模式),因此几乎任何内容都可以使用几乎任何ISO 8859变体进行编码(我只是出于谨慎才使用“几乎”,而不是任何确定你可以排除任何可能性)。
但是,您可以做出一些合理的猜测。例如,以UTF-8编码的BOM的三个字符开头的文件,可以安全地假定它真的是UTF-8。同样,如果您看到像这样的序列:110xxxxx 10xxxxxx,则可以相当肯定地猜测您所看到的内容是使用UTF-8编码的。如果您看到类似于110xxxxx 110xxxxx的序列,则可以排除某些东西是(正确)UTF-8编码的可能性。(110xxxxx是序列的前导字节,在正确编码的UTF-8中必须跟随非前导字节,而不是另一个前导字节)。

1

0

嗯,你不能这样做。但是你可以展示一些文件中的样本数据,以便用户检查是否正确。也许还可以提供选择不同编码选项的可能性,以帮助确定正确的编码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接