Приветствую всех. Ситуация простая до не могу. Есть программа, она написана на VB3 в году эдак 94. Запускается под NTVDM, её надо перевести на русский(не спрашивайте зачем ). В WinHex вижу все строки, которые мне необходимо перевести. Там ресурсы находятся в таких вот контейнерах: Код (Text): Offset 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 00134752 3E 00 00 00 08 00 01 FF 00 15 C2 E2 E5 E4 E8 F2 >......я..Insert 00134768 E5 74 65 61 6D 20 6E 69 63 6B 6E 61 6D 65 3A 03 team nickname:. 00134784 C0 C0 C0 00 05 68 01 58 02 07 08 77 01 0C 05 41 ААА..h.X...w...A 00134800 72 69 61 6C 00 00 04 41 D1 12 06 00 FF 00 03 3C rial...AС...я..< 00134816 00 00 00 09 00 01 FF 00 13 53 65 6C 65 63 74 20 ......я..Select 00134832 74 65 61 6D 20 6E 75 6D 62 65 72 3A 03 C0 C0 C0 team number:.ААА 00134848 00 05 68 01 F0 00 07 08 77 01 0C 05 41 72 69 61 ..h.р...w...Aria 00134864 6C 00 00 04 41 D1 12 05 00 FF 00 03 3E l...AС...я..> Я просто перебиваю всё на русский(длину ессно не превышаю). Соханяю и у меня всё отображается хорошо. Но так же хорошо отображается не у всех. По непонятным причинам у других людей, запускающих эту программу под такой же русской ОС, как и я(XP SP2), отображаются каракули. Я перепробовал кучу вариантов, почему и как... облазил массу настроек, но так и не смог установить причину. Почему у одних Label с шрифтом Arial показывает кириллицу нормально, а у других, на той же ОС, в виде абра-кадабры? Есть идеи? Куда рыть? С ув.
OMG, как же всё просто оказалось Я ведь смотрел RegMon'om, но использовал фильтр для "fon;ttf", про кодовые страницы мысль не пришла. RamMerLabs, спасибо большое.
Как заставить нелокализованные программы показывать русские буквы. Для воспроизведения русских букв в нелокализованных программах необходимо, чтобы последняя работала с кодовой таблицей 1251. Ярким примером нелокализованной программы является Adobe Photoshop, в котором принципиально ничего не напишешь по-русски даже заведомо русскими шрифтами. Для того чтобы обмануть программу, в реестре изменяется соответствие между кодовой страницей программы и используемым при отображении символов файлом кодовой таблицы. Изначально они соответствуют друг другу: 1250="с_1250.nls", 1251="с_1251.nls", 1252="с_1252.nls" и т.д. Большинство нелокализованных программ использует в качестве кодовой страницы альтернативного языка страницу 1250. При этом вместо русских букв выводятся символы европейских языков с надстрочными знаками, что не может радовать. Однако, можно обмануть программу и подставить в ее родную кодовую страницу 1250 таблицу от кодировки 1251 (кириллица). В итоге записи в реестре будут выглядеть так: 1250="c_1251.nls", 1251="c_1251.nls", 1252="c_1252.nls"... После этого нелокализованные программы будут нормально воспроизводить русские буквы. Есть и более "продвинутые" программы, использующие кодовую страницу 1252. В этом случае корректируется строка 1252="c_1251.nls"... Во избежание недоразумений рекомендуется сразу внести изменения в обе строки - 1250 и 1252. Если вам попалась более хитрая программа, то можно попытаться изменить другие таблицы, расположенные по тому же адресу. Раздел: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage Переменная: 1250, 1252... и т.д. (строковый) Значение: имя файла с кодировкой (С) http://saanvi.ru/fac.php?filename=ntregistry.txt
W4FhLF И этому методу уж 100 лет. В смысле, что для 95-го и 98-го это единственный способ был. В NT использовался по инерции. Вроде все серьезные проги уже давно переделаны. NTVDM - другое дело. Она обязана ДОС симулировать. А в ДОС наша страна использовала кодовую страницу 866 :-( Сколько же нервов это стоило при переходе в Винды... А еще есть шрифты(фонты) с суффиксом Cyr и миллионы документов его использующие. Блин - наворотили.