![[identity profile]](https://www.dreamwidth.org/img/silk/identity/openid.png)
![[community profile]](https://www.dreamwidth.org/img/silk/identity/community.png)
Такой вопрос. Имеется английская версия виндовс ХП с русскими региональными установками. При попытке открыть файлы, содержащие в имени буквы типа a, o, u с двумя точками наверху, o перечеркнутое и т.д. программы говорят file not found, хотя в проводнике эти файлы можно копировать, переименовывать, удалять и т.д. Можно что-то сделать чтобы эти файлы запускались?
no subject
Date: 2007-11-07 12:42 pm (UTC)no subject
Date: 2007-11-07 12:55 pm (UTC)если вопрос почему так происходит — то предоставляемые Windows программные средства (API) крайне неудобны и сложны. В частности, параметры командной строки программа получает как параметр главной функции WinMain. Начиная еще с версии 3.0 этот параметр передается в виде строки символов LPSTR, причем на каждый символ отводится ровно 1 байт памяти. В таком формате, естественно, ни о каком Unicode речи не идет. Если установлена кодовая страница русская, будут поддерживаться русские имена файлов, но не более того. Файловый поток программисту приходится открывать самостоятельно, что, кстати, делать с помощью API неудобно в высшей степени, а имя файла в процедуру открытия передается в виде все той же LPSTR-строки.
no subject
Date: 2007-11-07 05:58 pm (UTC)Виндовое API у всех функций содержит и юникодный вариант. К примеру получить командную строку - это функция GetCommandLineA() для ANSI и GetCommandLineW() для юникода.
no subject
Date: 2007-11-07 08:13 pm (UTC)