Какой вывод у текстового декодера - PullRequest
0 голосов
/ 03 июля 2018

Привет, я знаю, это звучит глупо, но на самом деле меня смущает то, что дает текстовый декодер? Что касается аудио / видео декодера, я могу понять, что он дает сэмплы, которые можно преобразовать в аналоговые данные, поступающие с устройств вывода.

Но я на самом деле не могу понять, что дает текстовый декодер и как любой декодированный текст можно использовать для кодирования с использованием любых схем кодирования.

1 Ответ

0 голосов
/ 06 июля 2018

Вы предполагаете, что для текста нет схемы кодирования. Это не верно. Есть десятки. Например, символ как последовательность октетов в нескольких популярных кодировках:

  • UTF-8: 0xe5 0x99 0xb8
  • UTF-16-BE: 0x56 0x78
  • GB18030: 0x87 0x8d
  • US-ASCII: невозможно, символ не принадлежит к репертуару символов кодировки
  • Latin9: невозможно, персонаж не принадлежит к репертуару символов кодировки

Еще один: ß

  • UTF-8: 0xc3 0x9f
  • UTF-16-BE: 0x00 0xdf
  • GB18030: 0x81 0x30 0x89 0x38
  • US-ASCII: невозможно, символ не принадлежит к репертуару символов кодировки
  • Latin9: 0xdf

Еще один: u

  • UTF-8: 0x75
  • UTF-16-BE: 0x00 0x75
  • GB18030: 0x75
  • US-ASCII: 0x75
  • Латиница 9: 0x75

Проверьте это вручную! Загрузите эту веб-страницу, откройте ее в шестнадцатеричном редакторе и попытайтесь найти приведенные выше последовательности UTF-8.

Текстовый декодер принимает октеты в качестве входных данных и снова превращает их в пригодный для использования текст.

Вероятно, вы еще не заметили эту концепцию, потому что вы до сих пор работали только с латинскими символами, и хотя вы забыли о том, чтобы заботиться о кодировании и декодировании текста, все сработало без явных проблем. Это потому, что многие кодировки несколько обратно совместимы с дедуля US-ASCII, как вы можете видеть из последнего примера.

Python, как и многие другие языки программирования, в высокой степени придерживается Unicode, как и его модель обработки текста. Четкое разделение текста в виде последовательности символов или графем (в языке программирования) и текста в кодировке в виде серии октетов (вне языка программирования, в дисковых файлах, стандартное Очень необходимы потоки ввода-вывода, базы данных, аргументы командной строки, переменные среды, сетевые сокеты и т. Д.), Иначе вы получите неправильный результат, когда попытаетесь определить размер текста или попытаетесь разбить его на строку.

Текстовый кодек - это точная граница между этими мирами.

...