- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要逐行读取文本文件,并按顺序对每个文件应用多个 CharsetDecoder。实际上,我首先尝试将行解码为 UTF8 编码的行,如果 UTF8 CharsetDecoder 引发 MalformedInputException,则回退到单字节字符集。
但是,如果我使用具有默认或指定字符集的 InputStreamReader,readLine 函数会默默地替换为“?”它认为对于指定字符集无效的所有字节。
我最终编写了自己的读取行的函数,该函数逐字节地从流中读取,查找行终止符并构造行。但这样看起来速度非常慢。
有没有办法让Java读取行而不接触字节?
更新:我发现有些字符集所有 256 个字节都是有效的,其中两个是行终止符。因此可以逐行读取原始字节流。此类字符集的示例是:
IBM00858IBM437IBM775IBM850IBM852IBM855IBM860IBM861IBM862IBM863IBM865IBM866ISO-8859-1ISO-8859-13ISO-8859-15ISO-8859-2ISO-8859-4ISO-8859-5ISO-8859-9KOI8-RKOI8-Uwindows-1256
问题现已结束。
最佳答案
您不能使用读取器类而不期望它解码底层字节流。如果您有一个文件,其中每一行都使用不同的字符集(?)进行编码,那么您最好设计一种检测底层字符编码的方法。也许您可以使用编码检测器,例如 juniversalchardet .
关于java - 读取未知编码的文本行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591450/
我想开发一个 Skype 机器人,它将用户名作为输入,并根据用户输入以相反的字符大小写表示hello username。简而言之,如果用户输入他的名字 james,我的机器人会回复他为 Hello J
我是一名优秀的程序员,十分优秀!