#windows #администрирование #windows_10 #codepage
Есть несколько legacy-приложений без полной поддержки unicode. Есть windows (в данном случае 10, но и на предыдущих версиях тоже проблема есть. Как минимум в 7 и 8). В программе выделяю слово "Привет", копирую в буфер обмена, вставляю в notepad.exe, получаю "Ïðèâåò" (результат преобразования не из win-1251 в Unicode, а из win-1252). Вставляю в другую не-юникодную программу и получаю "I?eaao" (результат преобразования из unicode в win-1251, с заменой символов на похожие, т.е. уже необратимо). Проблема не воспроизводится если переключить язык ввода на русский, но точно есть с английским. Отказаться от устаревших программ нельзя - корпоративный стандарт, исправить их тоже - исходников или нет или недоступны из-за лицензии. Постоянно проверять раскладку клавиатуры тоже невозможно. К тому же такие вещи происходят не только у меня, но и у пользователей, которые потом эти "кракозябры" присылают мне вместо сообщения об ошибке. Так вот вопрос в том, можно ли как-нибудь настроить windows, чтобы он всегда при преобразовании unicode<->ansi всегда принудительно использовал кодировку 1251? Если нет, можно ли настроить так, чтобы он хотя бы при copy и последующем paste использовал одну и ту же кодировку?
Ответы
Ответ 1
Исправление ошибки чтения кириллицы путем подмены файлов кодировок Идем в папку: C:\Windows\System32. И ищем файл с названием c_1252.nls и нам нужно переименовывать его в c_1252.bak или перенести в какой-нибудь другой каталог. Копируем файл c_1251.nls в C:\Windows\System32. Переименовываем копию файла в c_1252.nls. Перезапускаем компьютер. После загрузки компьютера кириллическая кодировка будет без проблем отображаться.Ответ 2
Control panel Region and language Administrative Change system localeОтвет 3
В реестре перенастроить кодовые страницы 1250 и 1252 на 1251. Хоть это и некорректно, но на сколько я помню, других вариантов нет. Иначе да, только переключать раскладку перед копипастом(можно программку написать). P.S. С просторов интернета: Это может происходить из-за того, что приложение, из которого производится копирование, помещает текст в буфер обмена в 8-битной кодировке, а то, в которое происходит вставка, запрашивает его в Юникоде (так делает, например, Блокнот). Windows "идёт навстречу" и перекодирует текст. При копировании в буфер помещается также информация о языке. Это может делать само приложение, а если не делает, то Windows просто смотрит, на какой язык ввода было переключено приложение в момент копирования. Если на русский, то используется страница 1251 и при вставке всё нормально. Но если текст русский, а окно приложения было переключено в английский, кодирование пойдёт через 1252 страницу и вместо русских букв пойдут "кракозябры". В таких случаях может помочь предварительное переключение приложения, из которого производится копирование, на русский.
Комментариев нет:
Отправить комментарий