Zerosquare (./1596) :
Pour l'UTF-16, j'avoue que je ne suis pas fan non plus. Ça n'a ni les avantages de l'UTF-8 (économie de la place, indépendance vis-à-vis de l'endianness), ni ceux de l'UTF-32 (nombre fixe d'octets par caractère, pas de validation des chaînes nécessaire).
Je crois que tu idéalises trop.
Commençons par le commencement, tu le sais à priori déjà), mais la grande majorité des caractères (et par grande majorité je veux dire au moins 99,99 %…) qu'on utilise aujourd'hui tiennent dans la BMP (Basic Multilingual Plane), et la BMP tient dans un seul caractère UTF-16.
D'autre part, l'unicode n'utilise
PAS 2
32 valeurs, tu as donc des bits qui seront toujours 0 quoi qu'il arrive.
Bref, l'UTF-32 est un gâchis d'espace énorme: Là où pour l'UTF-16, tu vas jusque gagner de l'espace par rapport à l'UTF-8 (2 ou 3 fois en moyenne…) si tu utilises pas mal de symboles asiatiques, l'UTF-32 va te quadrupler l'espace disque pour un texte en ASCII, et le doubler au moins pour tous les autres.
Un autre intérêt de l'UTF-16 étant qu'il encode
au plus sur 2 "caractères" contrairement à UTF-8 qui peut aller jusqu'à
8 octets4 octets.
[EDIT] J'étais shooté ce matin quand j'ai posté ça. Heureusement personne n'a vu l'erreur

Et au delà de cela, tu ne tiens pas compte de la nature de l'Unicode. Un caractère tout seul ne veut plus dire grand chose. Il y a plusieurs façon d'encoder un caractère accentué comme ê: le caractère ê, le caractère e suivi de ^ (U+0302), donc un caractère au sens où on l'entendait en ASCII n'a plus grande signification, et on peut avoir de longues séquences de caractères combinés. Il faut jouer avec les formes de normalisation de toutes façons, donc autant économiser de la place…
Je ne sais pas pourquoi MS a choisi ça ; peut-être que ça remonte à l'époque des formats asiatiques à deux octets par caractère, ou à une période où Unicode n'envisageait pas plus de 65 536 caractères.
Windows NT a supporté lUCS-2 depuis très longtemps. L'UCS-2 était l'ancêtre de l'UTF-16, et l'UTF-16 est partiellement rétro-compatble avec UCS-2