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 编码

Download history 432/week @ 2024-04-26 856/week @ 2024-05-03 456/week @ 2024-05-10 516/week @ 2024-05-17 180/week @ 2024-05-24 229/week @ 2024-05-31 350/week @ 2024-06-07 326/week @ 2024-06-14 242/week @ 2024-06-21 1405/week @ 2024-06-28 855/week @ 2024-07-05 458/week @ 2024-07-12 628/week @ 2024-07-19 587/week @ 2024-07-26 1814/week @ 2024-08-02 786/week @ 2024-08-09

3,859 下载/每月
28 包中使用 (9 个直接使用)

MIT 许可证

155KB
5.5K SLoC

htmlentity

用于编码和解码 HTML 实体的库。

Docs Build Status codecov

如何使用

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 = "&lt;div name='htmlentity'&gt;Hello!&#x4e16;&#x754c;!&lt;/div&gt;";
  // 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 中的文档。

许可证

MIT 许可证.

依赖项

~0.4–0.9MB
~19K SLoC