non-ascii file names in LSA archives
wildekat opened this issue · 2 comments
wildekat commented
При распаковке LSA искажаются не-ASCII символы в именах wav-файлов.
Например, если распаковать soundfr.lsa, é (U+00E9) превращается в два символа: U+0413 U+00A9 (d0 93 c2 a9 в UTF-8 вместо c3 a9). Похожее происходит и с другими не-ASCII символами. Система - Win 10. Долго раздумывал, но не смог понять, каким путём идёт это странное преобразование.
nongeneric commented
Проблема была в том, что файлы создавались с помощью функций не поддерживающих unicode-пути.
А с кодами последовательность, как я понял, такая вышла:
- был U+00E9 в словаре (в виде utf16)
- lsd2dsl сконвертировал в utf8 "c3 a9" и передал результат как название файла
- windows подумала что это windows-1251 (кодировка для не-unicode приложений в панели управления) и получила "Г©"
- в файловую систему записались "Г©" в виде U+0413 U+00A9
Поправил работу с путями, должно заработать.
wildekat commented
Точно! Что я только не пытался интерпретировать как cp1251, но самое важное - проморгал.
Спасибо большое, теперь всё работает как надо. Закрываю.