~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 6FCF089B64603081841EFB992606DDFF__1694268360 ✰
Заголовок документа оригинал.:
✰ Wide character - Wikipedia ✰
Заголовок документа перевод.:
✰ Широкий символ — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Wide_character ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/6f/ff/6fcf089b64603081841efb992606ddff.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/6f/ff/6fcf089b64603081841efb992606ddff__translat.html ✰
Дата и время сохранения документа:
✰ 15.06.2024 20:15:14 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 9 September 2023, at 17:06 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Широкий символ — Википедия Jump to content

Широкий характер

Из Википедии, бесплатной энциклопедии

Широкий символ компьютерного символа — это тип данных , размер которого обычно превышает размер традиционного 8-битного символа. Увеличенный размер типа данных позволяет использовать более крупные наборы кодированных символов .

История [ править ]

В 1960-х годах производители мэйнфреймов и мини-компьютеров начали стандартизировать 8-битный байт как наименьший тип данных. 7-битный набор символов ASCII стал стандартным методом кодирования буквенно-цифровых символов для телетайпов и компьютерных терминалов . Дополнительный бит использовался для контроля четности, чтобы обеспечить целостность хранения и передачи данных. В результате 8-битный байт стал де-факто типом данных для компьютерных систем, хранящих в памяти символы ASCII.

Позже производители компьютеров начали использовать запасной бит, чтобы расширить набор символов ASCII за пределы ограниченного набора символов английского алфавита . 8-битные расширения , такие как кодовая страница IBM 37, PETSCII и ISO 8859, стали обычным явлением, предлагая терминальную поддержку греческого языка , кириллицы и многих других. Однако такие расширения по-прежнему были ограничены, поскольку они зависели от региона и часто не могли использоваться в тандеме. Для преобразования одного набора символов в другой приходилось использовать специальные процедуры преобразования, что часто приводило к деструктивному переводу, когда в целевом наборе не существовало эквивалентного символа.

В 1989 году Международная организация по стандартизации начала работу над универсальным набором символов (UCS), многоязычным набором символов, который можно было закодировать с использованием 16-битного (2-байтового) или 32-битного (4-байтового) значения. Эти большие значения требовали использования типа данных размером более 8 бит для хранения новых значений символов в памяти. Таким образом, термин «широкий символ» использовался, чтобы отличать их от традиционных 8-битных символьных типов данных.

Связь с Unicode UCS и

Широкий символ относится к размеру типа данных в памяти. В нем не указано, как определяется каждое значение в наборе символов. Вместо этого эти значения определяются с использованием наборов символов, при этом UCS и Unicode представляют собой просто два общих набора символов, которые кодируют больше символов, чем позволяет 8-битное числовое значение (всего 255).

Отношение к многобайтовым символам [ править ]

Точно так же, как более ранние системы передачи данных страдали от отсутствия 8-битного чистого пути данных, современные системы передачи часто не поддерживают 16-битные или 32-битные пути передачи символьных данных. Это привело к появлению систем кодирования символов, таких как UTF-8 , которые могут использовать несколько байтов для кодирования значения, слишком большого для одного 8-битного символа.

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

Размер широкого символа [ править ]

Раннее внедрение UCS-2 («Unicode 1.0») привело к повсеместному использованию UTF-16 на ряде платформ, в первую очередь в Microsoft Windows , .NET и Java . В этих системах принято иметь «широкий характер» ( wchar_t на С/С++; charв Java) типа 16-бит. Эти типы не всегда сопоставляются непосредственно с одним «символом», поскольку суррогатные пары . для хранения всего диапазона Юникода (1996, Unicode 2.0) требуются [1] [2] [3]

Unix-подобные системы обычно используют 32-битную версию. wchar_t чтобы соответствовать 21-битному коду Unicode, как предписано C90. [4]

Размер широкого типа символов не определяет, какие кодировки текста может обрабатывать система, поскольку доступны преобразования. (Однако старые коды преобразования обычно игнорируют суррогаты.) Исторические обстоятельства их принятия также определяют, какие типы кодирования они предпочитают . Системы, находящиеся под влиянием Unicode 1.0, такие как Windows, имеют тенденцию в основном использовать «широкие строки», состоящие из единиц широких символов. Однако другие системы, такие как Unix-подобные, имеют тенденцию сохранять 8-битное соглашение «узкой строки», используя многобайтовую кодировку (почти универсально UTF-8) для обработки «широких» символов. [5]

Особенности программирования [ править ]

Си/С++ [ править ]

Стандартные библиотеки C и C++ включают ряд средств для работы с широкими символами и строками, состоящими из них. Широкие символы определяются с использованием типа данных wchar_t, который в исходном стандарте C90 определялся как

«целочисленный тип, диапазон значений которого может представлять отдельные коды для всех членов наибольшего расширенного набора символов, указанного среди поддерживаемых локалей» (ISO 9899:1990 §4.1.5)

И C, и C++ представили типы символов фиксированного размера. char16_t и char32_t в версиях соответствующих стандартов 2011 года, чтобы обеспечить однозначное представление 16-битных и 32-битных форматов преобразования Unicode , оставляя wchar_tопределяемый реализацией. 4.0 ISO/IEC 10646:2003 Стандарт Unicode гласит:

«Ширина wchar_tзависит от компилятора и может составлять всего 8 бит. Следовательно, программы, которые должны быть переносимы через любой компилятор C или C++, не должны использовать wchar_tдля хранения текста в формате Unicode. wchar_t type предназначен для хранения определяемых компилятором широких символов, которые в некоторых компиляторах могут быть символами Юникода ». [6]

Питон [ править ]

Согласно документации Python 2.7, язык иногда использует wchar_t как основа его типа характера Py_UNICODE. Это зависит от того, wchar_t «совместим с выбранным вариантом сборки Python Unicode» в этой системе. [7] Это различие устарело начиная с версии Python 3.3, в которой было введено хранилище UCS1/2/4 гибкого размера для строк и формально псевдонимов. Py_UNICODE к wchar_t. [8] Начиная с Python 3.12 использование wchar_t, то есть Py_UNICODE typedef для строк Python (wstr в реализации) был удален, и по-прежнему, как и раньше, « представление UTF-8 создается по требованию и кэшируется в объекте Unicode». [9]

Ссылки [ править ]

  1. ^ «Глобализация шаг за шагом: поддержка Unicode» . msdn.microsoft.com . Архивировано из оригинала 1 января 2009 года.
  2. ^ «Строковый класс (система)» . Learn.microsoft.com .
  3. ^ «Примитивные типы данных (Учебные пособия по Java™ > Изучение языка Java > Основы языка)» . docs.oracle.com .
  4. ^ «Широкие строки с нулевым завершением <wctype.h> — cppreference.com» . ru.cppreference.com .
  5. ^ «UTF-8 везде» . В последующие годы многие системы добавили поддержку Unicode и перешли на кодировку UCS-2. Это было особенно привлекательно для новых технологий, таких как фреймворк Qt (1992 г.), Windows NT 3.1 (1993 г.) и Java (1995 г.).
  6. ^ «5.2 ANSI/ISO C wchar_t». Стандарт Юникод . Алипранд, Джоан, Консорциум Unicode. (Версия 4.0 изд.). Бостон: Аддисон-Уэсли. 2003. с. 109. ИСБН  0-321-18578-1 . OCLC   52257637 . {{cite book}}: CS1 maint: другие ( ссылка )
  7. ^ «Объекты и кодеки Unicode — документация Python 2.7» . docs.python.org . Проверено 19 декабря 2009 г.
  8. ^ «Объекты и кодеки Unicode — документация Python 3.10.10» . docs.python.org . Проверено 18 февраля 2023 г.
  9. ^ «Объекты и кодеки Unicode» . Документация Python . Проверено 9 сентября 2023 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 6FCF089B64603081841EFB992606DDFF__1694268360
URL1:https://en.wikipedia.org/wiki/Wide_character
Заголовок, (Title) документа по адресу, URL1:
Wide character - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)