14 个版本 (稳定版)
1.3.2 | 2024年6月7日 |
---|---|
1.3.1 | 2023年4月17日 |
1.2.0 | 2021年3月19日 |
1.1.1 | 2021年2月18日 |
0.1.2 | 2020年11月30日 |
#135 in 编码
3,859 下载/每月
在 28 个 包中使用 (9 个直接使用)
155KB
5.5K SLoC
htmlentity
用于编码和解码 HTML 实体的库。
如何使用
use htmlentity::entity::{ encode, decode, EncodeType, CharacterSet, ICodedDataTrait };
use htmlentity::types::{ AnyhowResult, Byte };
fn main() -> AnyhowResult<()> {
let html = "<div name='htmlentity'>Hello!世界!</div>";
let html_after_encoded = "<div name='htmlentity'>Hello!世界!</div>";
// encode
let encoded_data = encode(
html.as_bytes(),
// encode format
&EncodeType::NamedOrHex,
// charcters need to be encoded
&CharacterSet::HtmlAndNonASCII
);
assert_eq!(encoded_data.to_bytes(), html_after_encoded.as_bytes());
assert_eq!(encoded_data.to_string()?, String::from(html_after_encoded));
let char_list = String::from(html_after_encoded).chars().collect::<Vec<char>>();
assert_eq!(encoded_data.to_chars()?, char_list);
// decode
let bytes = encoded_data.into_iter().map(|(byte, _)| *byte).collect::<Vec<Byte>>();
let decoded_data = decode(&bytes);
assert_eq!(decoded_data.to_bytes(), html.as_bytes());
assert_eq!(decoded_data.to_string()?, String::from(html));
let char_list = String::from(html).chars().collect::<Vec<char>>();
assert_eq!(decoded_data.to_chars()?, char_list);
// shortcut usage
assert_eq!(
encode(
html.as_bytes(),
&EncodeType::NamedOrHex,
&CharacterSet::HtmlAndNonASCII,
).to_string()?,
String::from(html)
);
Ok(())
}
更多详情,请参阅 Docs.rs 中的文档。
许可证
依赖项
~0.4–0.9MB
~19K SLoC