相关疑难解决方法(0)

Java:如何确定流的正确charset编码

参考以下线程: Java App:无法正确读取iso-8859-1编码文件

以编程方式确定输入流/文件的正确字符集编码的最佳方法是什么?

我尝试过使用以下内容:

File in =  new File(args[0]);
InputStreamReader r = new InputStreamReader(new FileInputStream(in));
System.out.println(r.getEncoding());
Run Code Online (Sandbox Code Playgroud)

但是在我知道用ISO8859_1编码的文件中,上面的代码产生了ASCII,这是不正确的,并且不允许我正确地将文件的内容呈现回控制台.

java encoding file stream character-encoding

135
推荐指数
10
解决办法
29万
查看次数

什么是最准确的编码检测器?

经过一定的调查,我发现java世界中有一些编码检测项目,如果getEncodingin InputStreamReader不起作用:

  1. juniversalchardet
  2. jchardet
  3. cpdetector
  4. ICU4J

但是,我真的不知道哪一个是最好的.任何有实践经验的人都可以告诉我哪一个是最好的Java?

java character-encoding

36
推荐指数
2
解决办法
2万
查看次数

检测UTF-8编码(MS IDE是如何做到的)?

各种字符编码的问题在于包含文件并不总是清楚地标记.使用"字节顺序标记"或BOM标记一些不一致的约定.但实质上,你必须被告知文件编码是什么,准确地读取它.

我们构建了读取源文件的编程工具,这让我们感到悲伤.我们有办法指定默认值,并嗅探BOM等.我们在常规和默认值方面做得很好.但是我们(我假设其他所有人)被挂起的地方是没有BOM标记的UTF-8文件.

最近的MS IDE(例如,VS Studio 2010)显然会"嗅探"文件以确定它是否是没有BOM的UTF-8编码.(从事工具业务,我们希望与MS兼容,因为他们的市场份额,即使这意味着必须与他们一起超越"愚蠢"的悬崖.)我特别感兴趣的是他们用作什么启发式(虽然启发式的讨论很好)?怎么会"正确"?(考虑以这种方式解释的ISO8859-x编码字符串).

编辑:关于检测字符编码/集的这篇论文非常有趣:http: //www-archive.mozilla.org/projects/intl/UniversalCharsetDetection.html

编辑2012年12月:我们结束扫描整个文件,看它是否包含任何违反UTF-8序列的行为......如果没有,我们称之为UTF-8.这个解决方案的不好的部分是你必须处理两次字符,如果它是UTF-8.(如果它不是UTF-8,这个测试可能会相当快地确定,除非文件发生在所有7位ASCII上,此时读取像UTF-8一样不会受到伤害).

ide utf-8 character-encoding

6
推荐指数
1
解决办法
1526
查看次数

标签 统计

character-encoding ×3

java ×2

encoding ×1

file ×1

ide ×1

stream ×1

utf-8 ×1