Представления многобайтных символов — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Представления многобайтных символов

2021-01-29 61
Представления многобайтных символов 0.00 из 5.00 0 оценок
Заказать работу

 

Строки широких символов сохраняются на диске путем преобразования их в памяти в многобайтное представление набора символов с последующей записью в дисковый файл. Сходным образом, такие строки считываются с диска через низкоуровневый блочный ввод/вывод, а затем конвертируются в памяти из многобайтной версии в версию широких символов.

Многие описанные кодировки используют для представления многобайтных символов состояния регистра (shift states). Другими словами, в данном потоке байтов значения байтов представляют самих себя до тех пор, пока не встретится специальное управляющее значение. В этот момент интерпретация изменяется в соответствии с текущим состоянием регистра. Таким образом, одно и то же восьмибитовое значение может иметь два значения: одно для обычного состояния, без использования регистра, и другое для использования регистра. Предполагается, что правильно закодированные строки начинаются и заканчиваются с одним и тем же состоянием регистра.

Значительным преимуществом Unicode является то, что его представления являются самокорректирующимися; кодировки не используют состояния регистров, поэтому потеря данных в середине не может повредить последующим закодированным данным.

Первоначальные версии функций преобразования многобайтных символов в широкие и широких в многобайтные поддерживали закрытую копию состояния преобразования (например, состояние регистра, а также все остальное, что могло понадобиться) Такая модель ограничивает использование функции лишь одним видом преобразования в течение жизни программы. Примерами являются (определение длины многобайтной строки), (преобразование многобайтного символа в широкий), (преобразование широкого символа в многобайтный), (преобразование многобайтной строки в строку широких символов), (преобразование строки широких символов в многобайтную строку).

Новые версии этих процедур называются повторно запускаемыми (restartable). Это означает, что код уровня пользователя сохраняет состояние преобразования в отдельном объекте типа. Соответствующими примерами являются,,, и. (Обратите внимание на в их именах, это означает «restartable».)

 

Языки

 

Языковые проблемы управляются локалью. Ранее в главе мы уже видели POSIX предоставляет продуманный механизм для определения правил, посредством которых работает локаль; некоторые подробности см. в справочной странице GNU/Linux locale (5), а полностью – в самом стандарте POSIX.

Правда в том, что подробности на самом деле не нужны. Вам, как разработчику программ, не нужно беспокоиться о них; как заставить все работать, зависит от разработчиков библиотек. Все, что нужно, это понять концепции и использовать в своем коде соответствующие функции, такие, как (см. раздел 13.2.3 «Сравнение строк: и»).

Современные системы GLIBC предоставляют отличную поддержку локалей, включая поддерживающие локали процедуры сопоставления регулярных выражений. Например, расширенное регулярное выражение POSIX соответствует букве, за которой следуют одна или более букв или цифр (алфавитный символ, за которым следуют один или более алфавитно‑цифровых символов). Определение того, какие символы соответствуют этим классам, зависит от локали. Например, это регулярное выражение соответствовало бы двум символам '', тогда как регулярное выражение традиционного, ориентированного на ASCII Unix – скорее всего нет. Классы символов POSIX перечислены в табл. 13.5.

 

Таблица 13.5. Классы символов регулярных выражений POSIX

 

 Класс Соответствует
  Алфавитно‑цифровые символы
  Алфавитные символы
  Символы пробела и табуляции.
  Управляющие символы
  Цифровые символы
  Символы, являющиеся одновременно печатными и видимыми. (Символ конца строки печатный, но не видимый, тогда как является и тем, и другим.)
  Строчные алфавитные символы
  Печатные (не управляющие) символы
  Знаки пунктуации (не буквы, цифры, управляющие или пробельные символы)
  Пробельные символы (такие, как сам пробел, символы табуляции, конца строки и т.д)
  Заглавные алфавитные символы
  Символы из набора

 

Заключение

 

Возможно, вам никогда не придется иметь дело с различными наборами символов и их представлениями. С другой стороны, мир быстро становится «глобальным сообществом», и авторы программ не могут позволить себе быть ограниченными. Следовательно, стоит знать о проблемах интернационализации и наборов символов, а также способах их влияния на поведение вашей системы. По крайней мере, уже один из поставщиков дистрибутивов GNU/Linux устанавливает для систем в Соединенных Штатах локаль по умолчанию.

 

 

13.5. Рекомендуемая литература

 

1. С, A Reference Manual, 5th edition, by Samuel P. Harbison III and Guy L. Steele, Jr., Prentice‑Hall, Upper Saddle River, New Jersey, USA, 2002. ISBN: 0‑13‑089592‑X.

Мы уже упоминали эту книгу раньше. Она дает точное и исчерпывающее описание развития и использования возможностей стандартной библиотеки С для работы с многобайтными и широкими символами. Это особенно ценно для современных систем, поддерживающих C99, поскольку библиотека была значительно усовершенствована для стандарта С 1999 г.

2. GNU gettext tools, by Ulrich Drepper, Jim Meyering, François Pinard, and Bruno Haible. Это руководство по GNU. На системе GNU/Linux вы можете посмотреть локальную копию через ''. Или загрузить и распечатать последнюю версию (по адресу).

 

Резюме

 

• Интернационализация и локализация программ подпадают под общее название поддержки родного языка. Широко распространенными сокращениями являются i18n, l10n и NLS. Центральным является понятие локали, которая позволяет настраивать набор символов, отображение даты, времени, денежных и числовых величин в соответствии с принятыми для данного языка и в данной стране нормами.

• Использование локали устанавливается с помощью функции. Различные категории локали предоставляют доступ к различным видам информации локали. Не использующие локаль программы действуют, как если бы они находились в локали «С», которая выдает типичные для систем Unix до NLS результаты: 7‑разрядный ASCII, английские названия месяцев и дней и т.д. Локаль «POSIX» эквивалентна локали «С».

• Сравнение строк с учетом локали осуществляется функцией или комбинацией и. Возможности библиотеки предоставляют доступ к сведениям о локали (и), а также к специфического для локали форматирования (, и).

• Обратной стороной получения относящейся к локали информации является вывод сообщений на местном языке. Модель System V, хотя и стандартизована POSIX, трудна для использования и поэтому не рекомендуется.[151] Вместо этого GNU реализует и расширяет оригинальный замысел Solaris.

• При использовании оригинальная строка сообщения на английском действует в качестве ключа в двоичном файле перевода, из которого получается перевод строки. Каждое приложение указывает уникальный текстовый домен таким образом, чтобы могла найти нужный файл с переводом (известный как «список сообщений»). Текстовый домен устанавливается с помощью функции. При тестировании или иной надобности местоположение списка сообщений можно изменить с помощью функции.

• и ее варианты предоставляют доступ к переводам в различных текстовых доменах или различных категориях локалей. Вдобавок, функция и ее варианты дают возможность делать правильные переводы множественных чисел, не перегружая разработчика. Указатель положения в спецификаторе формата дает возможность перевода форматирующих строк, аргументы которых должны выводиться в другом порядке, чем они располагаются в строке.

• На практике GNU программы используют для пометки переводимых строк в исходных файлах заголовочный файл и макросы и. Такая практика обеспечивает удобочитаемость исходного кода и возможность его поддержки, предоставляя в то же время преимущества интернационализации и локализации.

• GNU предоставляет многочисленные инструменты для создания и управления базами данных переводов (переносимых объектных файлов) и их двоичными эквивалентами (объектными файлами сообщений).

• Наконец, стоит быть в курсе проблем наборов символов и их представлений. Поставщики программного обеспечения не могут больше позволить себе предполагать, что их пользователи хотят работать лишь на одном языке.

 

Упражнения

 

1. Поддерживает ли ваша система локали? Если да, какая локаль используется по умолчанию?

2. Просмотрите справочную страницу locale (1), если она у вас есть. Сколько имеется локалей, если вы посчитаете их с помощью ''?

3. Поэкспериментируйте с,,, и в различных локалях. Какая из найденных локалей самая «необычная» и почему?

4. Возьмите одну из своих программ. Интернационализируйте ее с использованием GNU. Постарайтесь найти кого‑нибудь, кто говорит на другом языке, чтобы перевести для вас сообщения. Откомпилируйте перевод и протестируйте его, использовав. Какова была реакция вашего переводчика при виде использования перевода?

 

 

Глава 14

Расширенные интерфейсы

 

В данной главе описываются несколько расширенных API. Они сходны по своей природе с описанными ранее в книге или предоставляют дополнительные возможности. Некоторые из них трудно было свободно обсуждать, пока не были освещены предварительные темы.

Порядок представления здесь соответствует порядку глав в первой половине книги. В другом отношении темы не связаны друг с другом. Мы освещаем следующие вопросы: динамическое выделение выровненной памяти; блокировку файлов; ряд функций, работающих со значениями долей секунды; и более развитый набор функций для сохранения и получения произвольных значений данных. Если не указано противное, все API в данной главе включены в стандарт POSIX.

 


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.017 с.