aboutsummaryrefslogtreecommitdiff
path: root/crates/msh-core/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/msh-core/src/lib.rs')
-rw-r--r--crates/msh-core/src/lib.rs8
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>,