diff options
| author | Valentin Popov <valentin@popov.link> | 2026-02-19 13:09:18 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-02-19 13:09:18 +0300 |
| commit | bb827c3928ee6fc56c04e503be9f39ae70efee67 (patch) | |
| tree | 9d1af6595567517bcee3bddbcf7fefedce5dc5fe /crates/msh-core/src/lib.rs | |
| parent | efab61a45c8837d3c2aaec464d8f6243fecb7a38 (diff) | |
| download | fparkan-bb827c3928ee6fc56c04e503be9f39ae70efee67.tar.xz fparkan-bb827c3928ee6fc56c04e503be9f39ae70efee67.zip | |
feat: Refactor code structure and enhance functionality across multiple crates
Diffstat (limited to 'crates/msh-core/src/lib.rs')
| -rw-r--r-- | crates/msh-core/src/lib.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/crates/msh-core/src/lib.rs b/crates/msh-core/src/lib.rs index 1a50fb7..bc51357 100644 --- a/crates/msh-core/src/lib.rs +++ b/crates/msh-core/src/lib.rs @@ -1,6 +1,7 @@ pub mod error; use crate::error::Error; +use encoding_rs::WINDOWS_1251; use std::sync::Arc; pub type Result<T> = core::result::Result<T, Error>; @@ -347,13 +348,18 @@ fn parse_res10_names(data: &[u8], node_count: usize) -> Result<Vec<Option<String } else { slice }; - let decoded = String::from_utf8_lossy(text).to_string(); + let decoded = decode_cp1251(text); out.push(Some(decoded)); off = end; } Ok(out) } +fn decode_cp1251(bytes: &[u8]) -> String { + let (decoded, _, _) = WINDOWS_1251.decode(bytes); + decoded.into_owned() +} + struct RawResource { meta: nres::EntryMeta, bytes: Vec<u8>, |
