Как двоичные значения присваиваются новым символам? - PullRequest
0 голосов
/ 23 сентября 2019

В настоящее время в компьютерных науках, когда мы вводим данные (такие как буква, число, символ и т. Д.), Они преобразуются в двоичные и сохраняются на машине.Таким образом, всем 8-битным двоичным числам до 255. было присвоено какое-то предопределенное значение.

Мой вопрос: что произойдет, если какой-то новый символ был сгенерирован, и я хочу сохранить его или представить его на машине?Как распределяется это двоичное число?

Ответы [ 3 ]

1 голос
/ 24 сентября 2019

Что происходит, если был сгенерирован какой-либо новый символ

Это зависит от того, кто сгенерировал символ (символ ITYM).Вы, как конечный пользователь, можете назначать / выбирать номер (кодовую точку) только из области личного пользования , , см. Пример .

Если вам требуется совместимостьвам необходимо отправить символы в консорциум Unicode .

0 голосов
/ 24 сентября 2019

Ваш вопрос касается кодирования и декодирования (семантика / символ в / из кода / числа).

Вопрос слишком общий.Это зависит от метода кодирования.Некоторые из них завершены, поэтому нет места для расширения для новых символов (например, ASCII).Некоторые предвиденные методы улучшают и дополняют (например, Unicode), в некоторой степени.

Иногда «улучшение» выполняется на другом уровне: обычно есть ASCII, а затем экранирующие последовательности или коды (html: *)1005 * или © Примечание: два разных символа, также одинаковые / похожие символ , могут иметь различное кодирование или также escape-последовательности ASCII путем переключения плоскости / шрифта точки кода).Иногда как язык косметики, например, \copyright.

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

0 голосов
/ 23 сентября 2019

Unicode

Это происходит постоянно с распределением символов в Unicode .Например, символы были добавлены в Unicode v12.0 в апреле 2019 года, включая зевающее лицо, ? (кодовая точка 1F971), собака-поводырь (кодовая точка 1F9AE), ? и йо-йо ? (кодпункт 1FA80).В зависимости от вашего браузера и версий ОС вы можете или не можете видеть их как эмодзи.

Самая распространенная схема кодирования, используемая в Интернете: UTF-8 , которая является одной из нескольких Unicodeкодировки.

ASCII

ASCII , как кодировка, является 7-битной и охватывает значения 0-127.Если вы попытаетесь декодировать символ вне этого диапазона как ASCII, ошибка будет зависеть от реализации.Например, «A» присутствует как в ASCII (7-битный), так и в LATIN1 (8-битный), а «¡» - только в LATIN1.В Python это приведет к ошибке:

# script.py
import binascii

def encode_binary(input, encoding):
    return bin(int.from_bytes(input.encode(encoding), 'big'))

print(encode_binary('A', 'utf8'))
print(encode_binary('A', 'latin1')) 
print(encode_binary('A', 'ascii')) 
print() # print a newline
print(encode_binary('¡', 'utf8'))
print(encode_binary('¡', 'latin1')) 
print(encode_binary('¡', 'ascii'))
--------

$ python script.py
0b1000001
0b1000001
0b1000001

0b1100001010100001
0b10100001
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\u00a1' in position 0: ordinal not in range(128)
...