Interested Article - Широкий символ


- 2021-12-08
- 1
Широкий символ — термин, относящийся к программированию. Он используется для обозначения символьного типа данных, который шире традиционных 8-битных символов. Это не то же самое, что Юникод .
wchar_t
— это тип данных стандарта ANSI/ISO C (а также использующийся в других языках программирования) для представления широких символов.
Стандарт Unicode 4.0 говорит следующее:
«ANSI/ISO C оставляет семантику широких символов на усмотрение конкретной реализации»
а также
«размер типа
wchar_t
определяется компилятором, вплоть до минимальных 8 бит. Соответственно, приложения, которым требуется сохранять переносимость на различных C и C++ компиляторах, не должны использоватьwchar_t
для хранения Unicode-текста. Типwchar_t
предназначен для хранения широких символов в том виде, в котором их понимают конкретные компиляторы, и это может не соответствовать Юникоду ».
В Windows API тип wchar_t именуется как WCHAR и имеет фиксированный размер 16 бит, что не позволяет кодировать весь набор символов Unicode (больше 1 миллиона). Поэтому нарушается стандарт ANSI/ISO C, который требует, чтобы символьный тип wchar_t поддерживал все представимые в системе символы в одном объекте wchar_t . По сути, в WinAPI под WCHAR подразумевается 2-байтное слово из кодировки UTF-16LE (как тип WORD ), поэтому символы с кодами выше FFFF 16 кодируются парой WCHAR (так называемые «суррогаты») и всем API-функциям передаётся не количество символов, а размер символьного массива в машинных словах.
В
GNU/Linux
тип
wchar_t
имеет размер 32 бита.
В библиотеке ANSI C за широкие символы отвечают заголовочные файлы < wchar.h > и < wctype.h >.
Ссылки
![]() |
В статье есть список
источников
, но в этом разделе
не хватает
сносок
.
|
![]() |
Это
заготовка статьи
об
информационных технологиях
и
вычислительной технике
. Помогите Википедии, дополнив её.
|

- 2021-12-08
- 1