Стандарт Unicode определяет где-то более миллиона уникальных кодовых точек (каждая кодовая точка представляет собой «абстрактный» символ или символ - например, «E», «=» или «~»).
Стандарт также определяет несколько методов кодирования этих миллионов кодовых точек в обычно используемые базовые типы данных, такие как 8-битные символы или 16-байтовые символы.
Двумя наиболее широко используемыми кодировками являются utf-8 и utf-16.
utf-8 определяет, как кодировать кодовые точки Unicode в 8-битные символы. Каждая кодовая точка Unicode будет отображать от 1 до 4 8-битных символов.
utf-16 определяет, как кодировать кодовые точки Unicode в 16-битные слова (WCHAR в Windows). Большинство кодовых точек отображаются на один 16-битный WCHAR, но есть некоторые, для представления которых требуется два WCHAR.
Я рекомендую взглянуть на стандарт Unicode и особенно FAQ (http://unicode.org/faq/utf_bom.html)