Читать Отличная статья Джоэла Спольски на эту тему .
Интересный момент, который был отмечен при обсуждении другого ответа (который я действительно не думал, что автору необходимо удалить), заключается в том, что существует разница между набором символов , который (в слова другого автора - не помню его имени пользователя) определяет отображение между целыми числами и символами (например, «Капитал A равен 65») и кодировка , которая определяет, как эти целые числа должны быть представлены в байте поток. Большинство старых наборов символов, таких как ASCII, имеют только одну очень простую кодировку: каждое целое число становится ровно одним байтом. Набор символов Unicode, с другой стороны, имеет много разных кодировок, ни одна из которых не одинаково проста: UTF-8, UTF-16, UTF-32 ...