3.3. КодировкиWindows
Индикатор текущего языка ввода находится на панели задач справа (символы Enобозначают английский язык,Uk– украинский иRu– русский). Изменить язык ввода можно, щелкнув левой кнопкой мыши по индикатору. В появившемся затем меню следует щелкнуть левой кнопкой мыши по строке нужного языка. Кроме того, при установке или настройкеWindowsможно выбрать комбинацию клавиш для изменения языка ввода (либолевый Alt+Shift, либоCtrl+Shift).
Для кодирования текстовых данных в Windowsиспользуются три основные кодировки:
кодировка OEM;
кодировка ANSI;
кодировка Unicode.
В режиме командной строки в Windowsиспользуется кодовая таблица ASCII (American Standard Code for Information Interchange), разработанная ANSI (American National Standard Institute – Американский национальный институт стандартов). Первая половина таблицы (символы с десятичными кодами от 0 до 127) содержит те символы, которые можно ввести с клавиатуры (точнее с ее символьной зоны). Во второй половине кодовой таблицы (символы с десятичными кодами от 128 до 255) содержатся в основном общепринятые математические и так называемые псевдографические символы (например, "├" или "┬"), использовавшиеся в текстовом режиме для рисования линий и диаграмм.
Однако многие алфавиты используют буквы, отличные от 26 латинских букв, заданных в первой половине кодовой таблицы ASCII. Поэтому были разработаны кодовые страницы и для этих языков. Каждой такой кодовой странице присвоен числовой номер. Так, кодовые страницы с номерами 850 и 852 используются для западноевропейских языков, а кодовая страница 866 – для русского и украинского языков. В этой кодировке символы кириллицы имеют следующие коды:А-Я– 128-159 ('80' - '9F'),а-п– 160-175 ('A0' - 'AF'),р-я– 224-239 ('E0' - 'EF'), Ё– 240 ('F0'), ё– 241 ('F1'),Є– 240 ('F2'), є– 241 ('F3'), Ї– 240 ('F4'), ї– 241 ('F5'),т.е. расположены на тех позициях, где в кодировкеASCIIнаходятся относительно редко используемые символы национальных алфавитов и греческие буквы. Для украинских буквІи ів этой кодировке используются соответствующие латинские буквы с кодами 73 ('49') и 105 ('69').
В терминологии Windows кодировка ASCII называется кодировкой OEM (Original Equipment Manufacturer – производитель оригинального оборудования).
Кодировка ANSI является «родной» кодировкойWindowsи была разработана специально для этой операционной системы. Первая половина кодовой таблицы содержит те же символы, что и первая половина кодовой таблицы кодировкиASCII(OEM), т.е. текст на английском языке в обеих кодировках будет выглядеть одинаково. Во второй половине кодовой таблицыANSIтакже размещаются буквы национальных алфавитов. Кодовая страницаWindowsдля западноевропейских алфавитов имеет номер 1252, а для языков, использующих буквы кириллицы (в том числе, для русского и украинского языков) – номер 1251. Следует отметить, что коды одних и тех же букв русского и украинского языка в кодовой странице 866 и в кодовой страницеWindows-1251 не совпадают. Так, буквыА-Яимеют коды 192-223 ('C0' - 'DF'),а-я – 224-255 ('E0' - 'FF'),Ё– 168 ('A8'), ё– 184 ('B8'),Є– 170 ('AA'), є– 186 ('BA'), Ї– 175 ('AF'), ї– 191 ('BF'),І– 178 ('B2'), і– 179 ('B3'), Ґ – 165 ('A5'), ґ – 180 ('B4').
В кодировке Unicodeна каждый символ отводится два байта. Так, коды букв латинского алфавитаA-Zиa-zв шестнадцатеричном представлении лежат соответственно в диапазонах '0041' - '005A' и '0061' - '007A'. Коды букв русского алфавитаА-Яиа-ялежат соответственно в диапазонах '0410' - '042F' и '0430' - '044F'. Исключением являются буквыЁиё, коды которых имеют значения '0401' и '0451'. Буквы украинского алфавита, совпадающие с русскими буквами, имеют те же коды, что и соответствующие русские буквы, а буквыЄ, І, Ї, є, і, ї, Ґи ґимеют соответственно коды '0404', '0406', '0407', '0454', '0456', '0457', '0490' и '0491'.
Существует несколько разновидностей представления символов в кодировке Unicode. Самой распространенной являетсякодировка UTF-16, в которой каждый символ представлен двумя байтами, причем в процессоре и в памяти компьютера младший байт ('00' для латинских букв или '04' – для букв кириллицы) размещается вторым, а старший – первым, т.е. букваАбудет представлена как '1004'. Такое представление называют такжеUTF-16 Little Endian(младший байт в конце). Это представление используется в процессорах фирмыIntelи часто называют форматомIntel.
В кодировке UTF-16 Big Endian(старший байт в конце) первым идет младший байт, вторым – старший, т.е. букваАбудет представлена как '0410'. Такое представление данных используется в процессорахMotorolaиPowerPCи, соответственно, в компьютерах фирмыApple, использующих эти процессоры (в последнее время появились компьютерыAppleна основе процессоров фирмыIntel).
Формат UTF-8предназначен для сокращения объема вводимых и выводимых данных. Данные в этом формате представляются по следующему алгоритму:
символы Unicodeв диапазоне '0000' - '007F' (первые 128 символов) записываются одним байтом (старший байт отбрасывается);
символы Unicodeв диапазоне '0080' - '07FF' (охватывающем буквы наиболее распространенных национальных алфавитов) записываются двумя байтами следующим образом: символUnicodeс двоичной кодировкой00000xxxxxyyyyyy(гдеxиy–0или1) преобразуется к виду110xxxxx10yyyyyy;
символы Unicodeв диапазоне '0800' - 'FFFF' записываются тремя байтами следующим образом: символUnicodeс двоичной кодировкойxxxxyyyyyyzzzzzz(гдеx,yиz–0или1) преобразуется к виду1110xxxx10yyyyyy10zzzzzz.
Для того, чтобы текстовый редактор мог определить, какая из кодировок Unicodeиспользована для содержимого, в самом начале файла помещается символметки порядка байт–BOM(ByteOrderMark). Это либо символ 'FFFE' (для кодировкиUTF-16), либо символ 'FEFF' (для кодировкиUnicodeBigEndian), либо символ 'EFBBBF' (для кодировкиUTF-8).
Для представления букв русского и украинского алфавитов существуют также другие кодировки:
кодировка Unix (кодовая страница KOI8-R для русского языка и отдельная кодовая страница для украинского языка, иногда называемая KOI8-U);
кодировка Apple Macintosh (кодовая страница MacCyrillic);
международная кодировка кириллицы ISO8859-5 (относительная кодировка символов в этой кодировке соответствует кодировке Unicode).
Просмотреть используемые кодировки символов в различных шрифтах можно с помощью системного приложения WindowsТаблица символов. Запустить это приложение можно в подменюСлужебные, которое находится в подменюСтандартныеглавного меню. Выбор шрифта в диалоговом окне этого приложения производится в полеШрифт. Если подвести курсор к какому-либо символу шрифта рядом в рамке будет выведен код этого символа и его наименования. Если щелкнуть мышью по символу и нажать кнопкуВыбрать, то выделенный символ будет перенесен в полеДля копированиядиалогового окна. Выбранные в этом поле символы можно копировать в любое приложение с помощью кнопкиКопировать. Эту возможность можно использовать для вставки в текст символов, отсутствующих на клавиатуре (например, греческих букв или математических символов).
Редактор
Блокнотпозволяет открывать, просматривать и
редактировать текст во всех трех
кодировках (OEM,ANSIилиUnicode), однако для этого
необходимо установить соответствующий
шрифт с помощью командыШрифтменюФормат.
Для кодировкиOEMустанавливается шрифтTerminal,
а для кодировокANSIилиUnicodeможно установить
любой шрифт типаTrueType(со значком
)
илиOpenType(со значком
),
например,Times
New
Roman,Arial,VerdanaилиCourier
New.
Текстовый файл в кодировке OEM, открытый в редактореБлокнот, можно сохранить только в этой кодировке. Текст в кодировкеANSIилиUnicodeможно сохранить в одной из следующих кодировок:ANSI,UTF-16,UTF-16BigEndianиUTF-8. Для этого в диалоговом окне командыСохранить какменюФайлнеобходимо выбрать соответствующее значение в полеКодировка:ANSI,Юникод,ЮникодBig EndianилиUTF-8. По умолчанию текст в редактореБлокнотсохраняется в кодировкеANSI.
Редактор Блокнотне позволяет производить преобразование содержимого файла из кодировкиOEMв кодировкуANSI, а также выполнять обратное преобразование. Для этого можно использовать либо использовать командную оболочкуFar, либо воспользоваться редакторомWord(эта возможность будет рассмотрена в лабораторной работе 1-07).
В командной оболочке Farнадо сначала щелкнуть мышью по наименованию файла в кодировкеOEMи нажать клавишуF4(редактирование файла). В окне редактора помощью клавишCtrl+Aвыделяется содержимое всего файла, а затем с помощью клавиш Ctrl+Cсодержимое файла копируется в буфер обмена. Выход из редактора выполняется с помощью клавишиEsc.
После этого с помощью команды
copy conимя-файла.txt
создается новый файл, в котором сразу нажимается клавиша F6и клавишаEnter.Если имя файла содержит пробелы, его необходимо заключить в двойные кавычки.
Затем открывается (с помощью клавиши F4) полученный пустой файл и в нем с помощью переключателяF8устанавливается кодировкаWindows(значение режима кодировке в первой строке редактора должно бытьWin) и содержимое буфера обмена копируется в файл с помощью клавишCtrl+V. Содержимое файла в редакторе сохраняется с помощью клавишиF2.
Иногда необходимо просмотреть содержимое файла непосредственно в шестнадцатеричном виде, при этом каждый байт представляется двумя шестнадцатеричными цифрами. Такую возможность предоставляют многие командные оболочки (например, FarилиTotal Commander). Кроме того, существует целый класс текстовых редакторов, называемыхHEX-редакторами, специально предназначенных для просмотра и изменения содержимого файлов, дисков и оперативной памяти.
Для просмотра содержимого текстового файла в Farщелкните мышью по наименованию файла и нажмите клавишуF3(просмотр файла). Для вывода содержимого в шестнадцатеричном виде нажмите затем клавишуF4(эта клавиша переключает режим просмотра с текстового на шестнадцатеричный и обратно).
