В комп’ютерній і телекомунікаційній термінології символьний тип даних(char) це одиниця інформації, що приблизно відповідає графемі, графемі як символу в алфавіті або як складової в письмовій формі природної мови.
Прикладами символів є букви, цифри, знаки пунктуації та пробіли. Термін також включає керівні символи, які не відповідають символам в мові, але відповідають за обробку тексту в тій чи іншій мові. Як приклад, спеціальні символи, які вказують принтерам та спеціальним програмам як відобразити текст (символ переходу на новий рядок чи символ табуляції).
Комп'ютери та засоби зв'язку представляють символи використовуючи кодування, яке змінює кожен символ зазвичай на послідовність цифр для збереження символів, чи для передачі. Наведемо два приклади такого кодування: ASCII і UTF-8 кодування від Unicode. У той час як більшість таблиць кодування перетворюють символи у числа або послідовності бітів, азбука Морзе передає символи, використовуючи серію електричних імпульсів різної довжини.
Термінологія
Історично склалося так, що термін символ широко використовувався професіоналами для позначення закодованого символу в різних мовах програмування чи API. Термін гліф використовувався для опису зовнішнього вигляду символу. У багатьох комп’ютерних шрифтах всі гліфи проіндексовані відповідно до символу, який вони позначають.
З появою і широким поширенням прийнятих в Unicode спеціальних символьних наборів, символ став частіше розглядатися як одиниця інформації. Міжнародний стандарт ISO/IEC 10646 (Unicode) визначає символ як "член набору елементів, які використовуються для організації, управління або подання даних". Визначення Unicode доповнюється пояснювальними записками, що дозволяє читачу впізнавати символи, графеми і гліфи, серед інших речей.
Наприклад, буква івриту Алеф ("א") часто використовується математиками для позначення певних видів нескінченності, але вона також використовується і в звичайному єврейському тексті. В Unicode ці два варіанти використання вважаються як два різних символи і мають два різних числові ідентифікатори, хоча вони виглядають однаково. Або ж навпаки, китайська логограма для позначення води ("水") може мати дещо інший вигляд в японських текстах, але в Unicode це вважається за один і той самий символ.
Стандарт Unicode також відрізняє абстрактні символи від закодованих чи розкодованих, які були в парі з числовими кодами, що полегшує їх подання на комп'ютерах.
Об'єднуючий символ
В Unicode також розглядаються об'єднуючі символи. Наприклад, в Unicode існує спеціальний символ трема, яка додає дві точки над символом. Це дозволяє отримати символ " ї " двома способами: задавши зразу символ "ї", або задавши його як суму двох символів (U+0069 LATIN SMALL LETTER I + U+0308 COMBINING DIAERESIS).
Обидва вважаються канонічно еквівалентними, відповідно до стандартів Unicode.
char
Char в мові програмування С, є вбудованим типом розміром в 1 байт, розмір якого визначається щоб бути достатньо великим, щоб містити будь-який символ передбачений кодуванням UTF-8. Це задає мінімальний розмір у 8 біт, а саме число бітів можна дізнатись використовуючи макрос CHAR_BIT . Зазвичай використовується 8 біт, проте стандарт POSIX вимагає щоб розмір був у 8 бітів.
Відколи Unicode почав вимагати хоча б 21 біт для зберігання одного коду, стало неможливо вмістити один символ в одному char, тоді почали використовувати кодування зі змінною довжиною UTF-8. На жаль, через факт що символ історично зберігається в 1 байті ці терміни стали фактично взаємозамінні в більшості документацій. Тому часто виникали деякі неточності коли використовувалися багатобайтові кодування, такі як UTF-8, що призвело до неефективних і неправильних реалізацій функцій обробки рядків. Сучасна POSIX документація намагається виправити це, визначаючи символ, як послідовність з одного чи більше байтів, що представляє один графічний символ або код управління, і пробує використовувати байт коли посилається на символьні дані. Однак вона визначає масив символів як масив елементів типу char.
Символи з Unicode також можна зберігати в рядках, що складаються з кодових блоків які більші за char. їх називають широкими символами в мові С це тип wchar_t. На деяких платформах цей тип визначають як 16-бітний, на інших як 32-бітний, в останніх версіях ще додали char16_t, char32_t.
В інших мовах програмування також використовується тип char. Деякі, такі як С++ використовують 8 біт як і в С, а інші мови, такі як Java, використовують 16 бітів для char, щоб використовувати кодування UTF-16.
Буквені символи
Буквений символ має особливе значення в деяких аспектах обчислень.Такі символи згідно з ASCII, як правило, означають букву алфавіту AZ (верхній або нижній регістр), цифри від 0 до 9, і підкреслення.
Якщо брати до уваги символи “$” або “|” вони не утворюють слова, а символи 'é' (з французької мови ) або "я" (з української мови) чи “ά” (з грецької), використовується наприклад в таких словах, як fédération, Αγορά або Яблуко.