Когда компьютеры создавались впервые, они в основном работали только с символами на английском языке, что привело к 7-битному стандарту US-ASCII.
Однако в мире существует множество различных письменных языков, и необходимо было найти способы их использования на компьютерах.
Первый способ работает хорошо, если вы ограничиваете себя определенным языком, это использование специфичной для данной культуры кодировки, такой как ISO-8859-1, которая способна представлять символы латино-европейского языка в 8-битном формате, или GB2312 для китайских иероглифов.
Второй способ немного сложнее, но теоретически позволяет представлять каждый символ в мире, это стандарт Unicode, в котором каждый символ каждого языка имеет определенный код.
Однако, учитывая большое количество существующих символов (109 000 в Unicode 5), символы Unicode обычно представляются с использованием трехбайтового представления (один байт для плоскости Unicode и два байта для кода символа.
Чтобы максимизировать совместимость с существующим кодом (некоторые все еще используют текст в ASCII), стандартная кодировка UTF-8 была разработана как способ хранения символов Unicode, только используя минимальный объем пространства, как описано в Joachim Sauer ответить.
Таким образом, часто можно увидеть файлы, закодированные с помощью определенных кодировок, таких как ISO-8859-1, если файл предназначен для редактирования или чтения только программным обеспечением (и людьми), понимающими только эти языки, и UTF-8, когда есть должны быть в высшей степени совместимы и независимы от культуры.
В настоящее время UTF-8 предпочитает заменять другие кодировки, даже если он требует работы со стороны разработчиков программного обеспечения, поскольку строки UTF-8 сложнее обрабатывать, чем строки кодовых строк фиксированной ширины.