Подтвердить что ты не робот

Что такое кодировка по умолчанию для строк C?

Я знаю, что строки C char [] с '\ 0' в последнем элементе. Но как кодируются символы?

Обновление: я нашел эту классную ссылку, которая рассказывает о многих других языках программирования и их условных обозначениях: Ссылка

4b9b3361

Ответ 1

В стандарте говорится, что вы получаете по меньшей мере 52 символа латинского алфавита верхнего и нижнего регистра, цифры от 0 до 9, символы ! " # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~ и символ пробела, а также управляющие символы, представляющие горизонтальные вкладку, вертикальную вкладку и фид.

Единственное, что он говорит о числовом кодировании, - это то, что все вышеперечисленное соответствует одному байту и что значение каждой цифры после нуля больше, чем значение предыдущего.

Фактическая кодировка, вероятно, унаследована от ваших настроек локали. Возможно, что-то ASCII-совместимое.

Ответ 2

В стандарте это не указывается. Обычно с ASCII.

Ответ 3

Строка c - это всего лишь последовательность байтов. Это означает, что у него нет четко определенной кодировки, это может быть ASCII, UTF8 или что-то еще, если на то пошло. Поскольку большинство операционных систем понимают ASCII по умолчанию, а исходный код в основном написан с кодировкой ASCII, поэтому данные, которые вы найдете в простой (char *), очень часто будут ASCII. Тем не менее, нет никакой гарантии, что то, что вы выберете из (char *), будет UTF8 или даже KOI8.

Ответ 4

Они на самом деле не "закодированы" как таковые, они просто хранятся как есть. Строка "hello" представляет собой массив со значениями char 'h', 'e', 'l', 'l', 'o' и '\0' в этом порядке. Стандарт C имеет базовый набор символов, который включает эти символы, но не указывает кодировку в байты. Это может быть EBCDIC, для всего, что вы знаете.

Ответ 5

Как уже указывалось другое, C имеет некоторые ограничения, которые разрешены для кодировок символов источника и исполнения, но относительно разрешительны. Поэтому, в частности, это не обязательно ASCII, и в большинстве случаев в настоящее время, по крайней мере, расширения этого.

Ваша среда исполнения предназначена для возможного перевода между исходным и исполняемым наборами символов. Поэтому, как правило, вы не должны заботиться о кодировании и, наоборот, пытаться кодировать независимо от него. Поэтому существуют специальные escape-последовательности для специальных символов типа '\n' или '\t' и универсальных кодировок символов, таких как '\u0386'. Поэтому обычно вам не нужно искать кодировки для набора символов выполнения самостоятельно.