java - 字符编码不一致

标签 java unix

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

这里有两个示例文本:

然而,以任何自己想要的方式定义自己是很容易的,尤其是当媒体中没有人挑战你的时候。对道德勇气的真正考验是一个人在现实生活中的行为<97>而不仅仅是言语<97>。在一个具体的例子中,当伊利诺伊州参议员被要求挺身而出维护正义时,他却不见踪影。

另一个示例文本:

我会事先研究一切,并确切地知道每次预约时会进行什么样的测试以及这些测试的正常范围应该是多少。是吗?~@~我不是不知道吗?~@~我不用担心会发生什么事情,或者一个或多个测试结果会出现异常。我愿意。我想,有了过去几个月里所有这些美好的约会,我会开始不再那么害怕出问题了。但我的恐惧程度保持不变。

最佳答案

这些文本似乎编码不同 - 第一个似乎是 windows-1252 ,第二个可能是UTF-8显示有点奇怪。这意味着没有一种方法可以适用于所有这些内容。

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

但这只是猜测,确保正确阅读文本的唯一方法是首先确定每个文本的编码,也许根据编码将文本分类到不同的文件夹中,并在每个文本上使用正确的编码您读过的内容。

关于java - 字符编码不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21756509/

相关文章:

java - 如何使用 WebView 更改网页的外观?

linux - Unix 中的 bash 脚本 - Sed。未知代码

shell - 将文件读入 String 并在 Expect Script 中执行循环

Java:如何将列表转换为集合然后比较缺失值

java - 如何在 JMockit 中模拟具有 void 返回类型的方法?

java - 附近连接 : Discovery issues on Android 10

parsing - 解析一个文件提取2组信息

linux - 在 bash 脚本中使用 While 循环的问题(将文件拆分为多个文件)

linux - 为什么在子进程中忽略信号SIGABRT

java - 如何在 Java 中实现多线程池