1个不稳定版本
0.1.0 | 2024年2月6日 |
---|
1433 在 文本处理
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字节序列,那么负责的做法可能是丢弃整个文件;如果是按行格式,则丢弃整行。