字符编码不一致

时间:2014-02-13 14:07:13

标签: java unix

所以我有这个文件,其中撇号和双引号没有正确显示。我尝试将编码更改为UTF-8,但它仍然没有帮助。问题是整个更改并不一致,所以我不能简单地用撇号或双引号替换字符。请帮我解决一下这个。所以基本上我想在java中阅读这个文本,并为NLP应用程序做一些进一步的处理。当我通过显式地将编码设置为UTF-8来读取java中的这些文件时,我仍然会得到垃圾字符,但与我在文件中看到的不同。

以下是两个示例文本:

然而,它很容易以任何方式定义自己,特别是当媒体中没有人挑战你时。对道德勇气的真正考验是人们如何在现实生活中如何行动而不仅仅是谈话< 97>。在一个具体的例子中,当伊利诺伊州参议员被要求维护正义时,他无处可见。

另一个示例文本:

我会预先研究一切,并确切地知道每次约会时期望的测试类型以及这些测试的正常范围。它?〜@ Y不是我不喜欢?〜@〜你担心会发生什么事情,或者一个或多个测试会回来异常。我做。我认为,在过去几个月中我所做的所有这些良好的约会,我会开始感到不那么害怕出错了。但我的恐惧程度基本保持不变。

1 个答案:

答案 0 :(得分:1)

这些文本似乎编码不同 - 第一个似乎是windows-1252,第二个可能是UTF-8显示有点奇怪。这意味着没有单一的方法来阅读它们适用于所有这些方法。

您可以尝试做的最好的方法是尝试检测文件类型 - 例如,如果所有非7位ascii字符成对出现,第一个出现在0xc0-0xff范围内,那么它可能是UTF -8。如果在0x80和0xbf之间的范围内有任何first-after-ascii字符,那么它的NOT UTF-8。除非你知道文本是用非拉丁文字(俄语,希腊语......)编写的,否则只要它不是UTF-8,就可以安全地假设windows-1252。

但这是猜测,确保正确阅读文本的唯一方法是首先确定每个文本的编码,然后根据编码将文本排序到不同的文件夹中,并对每个文本使用正确的编码。你读过的那些。