Кодировка - это просто отображение числовых значений и «символов».
US-ASCII отображает число 65 на букву A, 32 на пробел и 49 на цифру "1". (Как эти вещи представлены - другое дело.) Фактически, UTF-8 делает то же самое! Но есть и другие значения, которые UTF-8 трактует иначе, чем ASCII. Это кодирование переменной длины, то есть символ может быть закодирован с 1, 2, 3 или 4 байтами; обычные символы обычно занимают меньше байтов.
Простые текстовые файлы, включая веб-страницы, хранятся и передаются в виде последовательности байтов. Эти байты должны представлять что-то текстовое. Программные приложения (такие как текстовые редакторы и веб-браузеры) отвечают за отображение информации в этих файлах на экране. Обычно они используют функции библиотеки или ОС.
Если программное обеспечение предполагает другую кодировку, чем программное обеспечение, создавшее файл, могут отображаться неправильные символы!
Обратите внимание, что возможно преобразование между различными кодировками; однако, если вы преобразуете кодировку, которая не содержит определенный символ, программное обеспечение должно сделать выбор относительно того, что использовать вместо этого. Это преобразование часто происходит прозрачно (когда вы сохраняете файл с определенной кодировкой, все, что вы ввели, должно быть заменено этой кодировкой).