#utf-8 #lossy #bufread #string #read-line #character-encoding

lines_lossy

BufRead提供了一个名为lines_lossy的函数扩展,其功能类似于BufRead::lines,但具有损失性UTF-8解码功能。

1个不稳定版本

0.1.0 2024年2月6日

1433文本处理

MIT 许可证

8KB
71

lines-lossy

此crate提供了一种扩展特质LinesLossyExt,该特质为任何实现了BufRead的类型提供泛型实现。它只有一个成员函数LinesLossyExt::lines_lossy,该函数的功能类似于BufRead::lines,但不同之处在于,在存在无效UTF-8数据的情况下,它返回该字符串的损失性表示,用替换无效字符,就像String::from_utf8_lossy所做的那样。

何时使用lines_lossy

您想要使用lines_lossy来读取UTF-8编码的文本文件的行,您怀疑这些文件可能包含非UTF-8字节序列,但您仍然想要处理正确的文本。

一个明显的例子是日志文件:它应该是UTF-8编码的,但它存在了很长时间,它可能已损坏,它可能包含从不受信任的来源读取的文本...您不希望因为行不是UTF-8有效而丢弃这些行,只读取您能读的部分。任何其他可读文本文件也可能适合这种用例。

另一个例子是只使用ASCII字符的计算机语言文件,但可能包含使用未指定编码的易读注释。由于该编码可能任何,您可能无法成功解码它们,但它们是注释,可能可以丢弃。这种用例可能包括汇编语言、g-code、dxf、nmea等语言。

何时不使用lines_lossy

您不应使用此crate来读取应始终具有正确UTF-8行的文本文件,例如配置文件或API响应。如果您有这样的文件且包含非UTF-8字节序列,那么负责的做法可能是丢弃整个文件;如果是按行格式,则丢弃整行。

无运行时依赖