«Набор символов» - это то, что он говорит: правильно заданный список различных символов.
«Кодировка» - это отображение между набором символов (обычно Unicode сегодня) и (обычно байтом)на основе) технического представления символов.
UTF-8 является кодировкой, но не набором символов.Это кодировка набора символов Unicode (*).
Путаница возникает из-за того, что большинство других известных кодировок (например, ISO-8859-1) начинались как отдельные наборы символов.Затем, когда Unicode стал надмножеством большинства этих наборов символов, стало возможным думать о них как о различных (но частичных) кодировках одного и того же (Unicode) набора символов, а не просто как о изолированных наборах символов.Глядя на них таким образом, вы можете легко переходить между ними через Unicode, что было бы невозможно, если бы они были просто изолированными наборами символов.Но все же имеет смысл называть их наборами символов, поэтому можно использовать любой термин.
«Кодовая страница» - это термин, происходящий от IBM, где он выбирает, какой набор символов будет отображаться.Термин продолжал использоваться DOS, а затем Windows, вплоть до Unicode-ориентированной Windows, где он просто действует как кодировка с нумерованным идентификатором.В то время как пронумерованная «кодовая страница» является идеей, которая по сути своей не ограничена Microsoft, сегодня этот термин почти всегда означает просто кодировку, о которой знает Windows.
Когда кто-то говорит о кодовой страницеобычно говорят о кодировке, специфичной для Windows, в отличие от кодировки, разработанной органом по стандартизации.Например, кодовая страница 28591 обычно не упоминается под этим именем, а просто «ISO-8859-1».Специфичная для Windows западноевропейская кодировка, основанная на ISO-8859-1 (с несколькими дополнительными символами, заменяющими некоторые из ее управляющих кодов) обычно называется «кодовой страницей 1252».
[*: ВсеUTF - это кодировки, а не наборы символов, но такие вещи не являются исключительными для Unicode.Например, японский стандарт JIS X 0208 определяет для него набор символов и две разные кодировки байтов: несколько неприятное высокобайтовое кодирование ('Shift-JIS') и глубоко ужасающее кодирование на основе escape-переключения ('JIS«).]