8 releases
Uses new Rust 2024
| 0.3.1 | Dec 15, 2025 |
|---|---|
| 0.3.0 | Dec 15, 2025 |
| 0.2.2 | May 2, 2022 |
| 0.2.1 | Nov 3, 2020 |
| 0.1.0 | Nov 18, 2019 |
#254 in Encoding
809 downloads per month
Used in 10 crates
(4 directly)
460KB
8K
SLoC
textcode
Intro
Textcode is a library for text encoding/decoding.
The library uses non-strict conversion: invalid or unmappable characters are replaced with ?.
⚠️ Breaking change in v0.3.0
The library API has been completely redesigned:
Old API (v0.2.x): module-based functions
use textcode::iso8859_5;
let mut text = String::new();
iso8859_5::decode(b"\xbf\xe0\xd8\xd2\xd5\xe2!", &mut text);
let mut bytes = Vec::new();
iso8859_5::encode("Привет!", &mut bytes);
New API (v0.3.x): generic functions with codec types
use textcode::{Iso8859_5, decode, encode};
let text = decode::<Iso8859_5>(b"\xbf\xe0\xd8\xd2\xd5\xe2!");
let bytes = encode::<Iso8859_5>("Привет!");
Charsets
UTF-8UTF-16- Decoding BE and LE with BOM, encoding BE without BOMiso-6937- Latin superset of ISO/IEC 6937 with Euro and letters with diacriticsiso-8859-1- Western Europeaniso-8859-2- Central Europeaniso-8859-3- South Europeaniso-8859-4- North Europeaniso-8859-5- Cyrilliciso-8859-6- Arabiciso-8859-7- Greekiso-8859-8- Hebrewiso-8859-9- Turkishiso-8859-10- Nordiciso-8859-11- Thaiiso-8859-13- Baltic Rimiso-8859-14- Celticiso-8859-15- Western Europeaniso-8859-16- South-Eastern Europeangb2312- Simplified ChineseGeo- DVB single-byte Georgian character encoding (Magti TV)
Example
use textcode::{Iso8859_5, decode, encode};
const UTF8: &str = "Привет!";
const ISO8859_5: &[u8] = &[0xbf, 0xe0, 0xd8, 0xd2, 0xd5, 0xe2, 0x21];
let text = decode::<Iso8859_5>(ISO8859_5);
assert_eq!(text, UTF8);
let bytes = encode::<Iso8859_5>(UTF8);
assert_eq!(bytes, ISO8859_5);