cookieOptions

среда, 17 сентября 2014 г.

Проблемы кодировки в Windows и MS Office разных версий и методы решения


С переходом ко все новым версиям Windows острота проблемы существования множества кодировок русского языка почти сошла на нет
Фото с сайта hardnsoft.ru

Радикально данную проблему призван решить переход к Unicode, который для Windows длится уже не первое поколение этой системы, но все никак не закончится. И, как это часто бывает, решая одни проблемы, Unicode порождает множество других.
Впрочем, для интернет-ресурсов и писем это почти всегда легко решается браузерами и почтовыми клиентами автоматически. Если у вас веб-страница или письмо все же отображается «кракозябрами» (что иногда случается из-за несоблюдения разработчиками стандартов), то нужно из главного меню выбрать пункт «Кодировка» и там методом проб и ошибок установить нужную. Этот пункт в большинстве браузеров находится в меню «Вид» (напомним, что отсутствующее на виду в современных версиях веб-обозревателей главное меню всегда можно вызвать клавишей).


Проблемы «обычного текста»
Одна из таких проблем связана с файлами в формате «обычный текст», хотя, казалось бы, что может быть проще? Бери последовательность текстовых символов и записывай в файл. Но именно из-за этой простоты, если уж проблема в них возникает, то по полной программе.
Если вы попробуете сохранить русский текст через Word (любой версии после Office 97, включая последнюю 2010) как «обычный текст», то получите на выбор ряд однобайтовых русских кодировок. По умолчанию (рис.1) предлагается стандартная «кириллица Windows» ( также известная как 1251, или ANSI), знакомая еще по DOS.
Попробуйте сделать то же самое через стандартный «Блокнот» из Windows 7 — вам уже предложат выбор между привычной ANSI и аж тремя вариантами Unicode (рис. 2). Тут уже кроется засада: текстовый файл в формате «юникода» должен сопровождаться специальным заголовком BOM (Byte Order Mark), определяющим порядок следования байтов (т. е. какой байт в 2-байтовом символе идет первым — старший или младший). Собственно засада заключается в том, что BOM не является обязательным атрибутом юникод-файла, и, с одной стороны, может отсутствовать в текстах, полученных из внешнего источника (скажем, из-под некоторых Linux-программ), с другой — вызывать сбои в программах, которые этого заголовка «не понимают».
Рецепт тут один: по мере возможности избегать «юникода» в «чистых текстах» и ориентироваться на привычную ANSI. Это позволит избежать большинства проблем, связанных с русскоязычными текстовыми файлами, хотя и ограничит их переносимость в англоязычные или европейские версии ОС.
Другую задачу, связанную с текстовыми файлами, которая обычно ставит в тупик неопытных пользователей, умеет решать любой Microsoft Word, начиная с версии Office XP — это столкновение с текстами в нестандартной однобайтовой кодировке (например, старинной DOS, также известной как OEM, или 866). Сначала надо убедиться в настройках, что включена опция «Подтверждать преобразование формата файла при открытии» (по умолчанию она выключена!). В старых версиях Word эта настройка находится в меню «Сервис/Параметры» на вкладке «Общие». В Word 2007 нажмите на кнопку с эмблемой Office, выберите «Параметры Word» в нижней части открывшегося окна. В Word 2010 раздел «Параметры» доступен через меню «Файл». В «Параметрах» перейдите к пункту «Дополнительно» на боковой панели, а затем найдите там раздел «Общие» (рис. 3).
При включенной этой функции открывать «нечитаемый» текстовый файл следует через меню «Открыть» (а не щелчком из Проводника, при котором запустится, скорее всего, «Блокнот»). Потом следует выбрать из выпадающего списка типов файлов пункт «Восстановление текста из любого файла». Файл может быть, естественно, любого формата (т. е. необязательно с расширением TXT), лишь бы он содержал текст, а не двоичные символы.
Кстати, просто прочесть документ именно в DOS-кодировке можно и с помощью «Блокнота» и вообще любой программы, которая умеет менять шрифты — достаточно через меню выбора шрифта (в «Блокноте» это «Формат/Шрифт») заменить текущий на Terminal. Не забудьте только вернуть потом шрифт обратно, а то не прочтете нормальные документы.

Unicode в Буфере обмена
Однако такие конфликты с текстовыми файлами — довольно редкий случай. У рядового пользователя гораздо чаще возникают проблемы с Unicode в Буфере обмена. Обычная ситуация, когда при переносе текста из старых программ, не поддерживающих указанную кодировку, или некоторых PDF-документов вместо русского при вставке возникает что-нибудь вроде Auaia iayedai . В большинстве правильно составленных приложений помогает простое переключение на русский язык (именно в той программе, откуда производится копирование, а не в пункте назначения), но нередко встречаются особо упертые приложения и PDF-документы, откуда сведения о том, что это русский язык, не удается извлечь никакими силами.
Microsoft Word в старых версиях Office XP и 2003 умеет решать эту проблему, о чем многие не знают, — в нем есть функция «Исправить поврежденный текст» (в меню «Сервис»). В новых версиях 2007/2010 такой функции нет. В справке и на сайте Microsoft ничего об этом разыскать не удалось — вполне вероятно, в Microsoft посчитали, что продуктов, имеющих подобные свойства, уже не осталось в природе, что, к сожалению, не соответствует действительности.
Возможно, вам тоже не захочется терять время на поиски официального решения. Тогда воспользуйтесь моей программой ClipWin (рис. 4), которую можно скачать по адресу: revich.lib.ru/clipwin.zip. Интерфейс этой программы сделан в расчете на максимально быстрое выполнение операции, но без потери контроля за ее выполнением: если текст в системном «кармане» уже имеется — достаточно запустить программу и трижды нажать на . После первого нажатия текст (уже исправленный) вставится из Буфера обмена в окно для контроля, после второго — исправленный текст заменит тот, что был изначально, а после третьего у вас программа закроется, но сам текст будет исправлен и его можно будет вставлять куда угодно.
Раскладка клавиатуры как правильно?
По моему глубокому убеждению, комфортно существовать и эффективно работать в среде Windows без использования дополнительных переключателей раскладки клавиатуры абсолютно невозможно — необходимость постоянного прицеливания скрюченными пальцами в две клавиши одновременно у меня вызывает боль в пальцах при одной только мысли об этом. Точнее, абсолютно невозможно это было до появления Vista, где вместе с традиционными комбинациям клавиш появилась, наконец, возможность переключать язык ввода одной клавишей <Ё>. Но и такое решение, по крайней мере, для радетелей чистоты русского языка, неприемлемо — не вводить же букву Ё каждый раз через специальную вставку или таблицу символов.
Решение этой проблемы общеизвестно и заключается оно в применении популярной переключалки Punto Switcher, позволяющей настроить для выполнения операции в принципе любую клавишу (обычно это правый или ). Программа поддерживается «Яндексом», скачать ее можно из раздела «Программы» поисковика (по адресу soft.yandex.ru) или напрямую по адресу punto.yandex.ru. Об этой и других аналогичных программах недавно рассказал Александр Евдокимов в статье «Корректоры букв».
Многие программы данного типа способны выполнять и другую востребованную функцию: переключение уже набранного в неправильной раскладке текста. В зависимости от настроек, это может осуществляться даже автоматически, хотя лично я предпочитаю эту автоматику отключать.
Еще одно недоразумение, связанное с языковой раскладкой, встречается реже, но может добавить несколько неприятных моментов. После переключения на английский вас может озадачить одна особенность ввода некоторых символов. Это касается таких знаков, как кавычки, апострофы (их два — прямой и наклонный), тильда «~» и циркумфлекс («крышечка») «^». После нажатия соответствующей клавиши ничего не вводится — надо еще нажать либо пробел, чтобы ввести знак в «чистом» виде, либо еще какую-то букву или цифру, тогда знак введется перед ней. Можно нажать кавычку или апостроф дважды — появится сразу пара знаков (они и употребляются часто парами, текст тогда вводится между ними).
Такая, не всегда удобная особенность англоязычного компьютерного ввода может возникнуть, если по каким-то причинам для английского языка установлена раскладка «США-международная» (или, возможно, какая-то из европейских, которые у нас не в ходу). Недоразумение легко устраняется, если сменить раскладку для английского языка обратно на положенную по умолчанию просто «США». В Windows 7 к этой настройке можно добраться в Панели управления через «Языки и региональные стандарты / Языки и клавиатуры / Изменить клавиатуру / Общие / Добавить» (рис. 5).
Итоговый совет
Если у вас возникают другие проблемы с кодировками, не описанные в этой статье, то, вероятнее всего, они вызваны установкой «не той» версии Windows — например, американской или европейской с дополнительным языковым пакетом. Во избежание таких проблем следует по возможности всегда пользоваться русской версией. Но так уж сложилась жизнь у русскоязычных пользователей Windows, что проблема кодировок была, есть и будет. Ее острота снижается по мере обновления программного обеспечения, но, вероятно, проблема никогда не исчезнет полностью.
ИсточникHard'n'Soft
Автор: Юрий Ревич

Комментариев нет:

Отправить комментарий