1个稳定版本
1.0.0 | 2020年9月10日 |
---|
#1952 在 编码
11,705 每月下载量
在 2 crates 中使用
4KB
strip_bom
为str
和String
添加简单的BOM去除功能。
使用方法
use str_strip_bom::*;
// Or std::fs::read_to_string, surf::get, ...
let my_string: Vec<u8> = vec![ 0xefu8, 0xbb, 0xbf, 0xf0, 0x9f, 0x8d, 0xa3 ];
let my_string: String = String::from_utf8( my_string ).unwrap();
// In this time, my_string has the BOM => true 🍣
println!( "{} {}", my_string.starts_with("\u{feff}"), &my_string );
// Strip BOM
let my_string: &str = my_string.strip_bom();
// my_string (slice) has not the BOM => false 🍣
println!( "{} {}", my_string.starts_with("\u{feff}"), &my_string );
动机
- 我想要一个简单轻量级的BOM去除器,仅用于
str
和String
,而不是字节流或其他UTF-8格式,如UTF-16或UTF-32。 - 因为,例如,
serde
和serde_json
不支持BOM,如果我将UTF-8 BOM源放入其中,它将失败。 - Rust标准库中的
str
和String
不提供BOM去除功能;参见https://github.com/rust-lang/rfcs/issues/2428。
参考
- https://tools.ietf.org/html/rfc3629; RFC3269 "UTF-8,ISO 10646的转换格式" §6. 字节顺序标记(BOM)
许可证
作者
- USAGI.NETWORK / Usagi Ito https://usagi.network