java - 部分加载具有不同编码的大文本文件

标签 java text encoding load large-files

我正在编写一个 Java 文本组件,并尝试在中间部分加载一些大文本文件(出于速度原因)。

我的问题是文本是否采用某种多字节编码格式,例如 UTF8、Big5、GBK 等。如何对齐字节以便正确解码文本?

最佳答案

我不能谈论其他格式,但 utf8 应该不会太难。

只需查看您抓取的 block 的第一个字节并从那里找出:

摘自维基百科:

00000000-01111111   00-7F   0-127   US-ASCII (single byte)
10000000-10111111   80-BF   128-191 2'nd, 3rd, or 4'th byte of a multi-byte sequence
11000000-11000001   C0-C1   192-193 start of a 2-byte sequence, but code point <= 127
11000010-11011111   C2-DF   194-223 Start of 2-byte sequence
11100000-11101111   E0-EF   224-239 Start of 3-byte sequence
11110000-11110100   F0-F4   240-244 Start of 4-byte sequence

如果该字节位于第二组或第三组中,那么您就知道错过了字符的一部分。如果它位于第 1、4、5、6 组中,那么您就知道您正处于角色的开头。从那里继续进行相应的操作。

关于java - 部分加载具有不同编码的大文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/984766/

相关文章:

jquery - 简单的 jQuery 动画替换数组中的文本

python - 如何使用 Python 将文件格式从 Unicode 转换为 ASCII?

java - 如何从 VariableDeclarationStatement 获取方法名称

java - 错误: Undefined is not an object (evaluating 'NativeGraphRequestManager.start' ) - react-native-fbsdk (Android)

java - Java的浮点实现是否还有Kahan发现的问题?

java - 如何从自定义对象列表中获取特定属性值的数组

iphone - 缩放文本以适合 iPhone

python - "%"登录 matplotlib Python

powershell - 如果PowerShell不提供,如何使用OEM编码读取文件?

Java FX - Cp1252 字符编码错误