unicode c'est simple pourtant

il faut juste regarder les codes ascii en binaire pour comprendre un peu mieux
http://fr.wikipedia.org/wiki/UTF-8
la c'est assé bien expliqué perso je comprenais pas non plus au début mais en fait c'est pas trop compliqué
je vais tenter de t'expliquer un peu plus simplement
un caractère peut être codé en utilisant jusqu'à 4 octets mais comme c'est variable il faut savoir sur combien d'octet est codé le prochain caractere de ta phrase ...
pour cela ils on réfléchis au système suivant tu prend la représentation binaire de ton caractère codé sur 8 bit donc ascii
et tu regarde les bits de poids forts
un bit de poids fort c'est pas un bit qui aurais mangé trop de cassoulet étant jeune mais c'est un bit qui si tu le met a 1 augmente considérablement la valeur de ton octet
en l'ocurence les bits a gauche de la representation binaire de l'octet
00000000 = 0
00000001 = 1
10000000 = 128
donc si tu remarque bien si on met le bit a gauche sur 1 ta valeur fait un bond de 128 ce qui est quand meme enorme sur un nombre pouvant atteindre au maximum 255 c'est donc ce qu'on apelle un bit de poids fort.
l'utf 8 concidere que si le bit de poids fort est a zero le caractere correspond a son code ascii
bit de poids fort = 128 donc tout ce qui est inferieur a 128 n'est pas codé en utf8 mais en ascii
si le bit de poids fort est a 1 alors le caractere est encodé selon la norme utf8 et necessite plusieurs octets pour son encodage
le premier octet lu donne donc le nombre d'octets utilises pour encoder le caractere. pour cela on compte le nombre d'octets de poids forts a 1 ils sont toujours suivis d'un bit a 0 comme separateur avec le code du caractere proprement dit.
11000011
en gras on a deux bits de poids forts a 1 ce qui fais donc un caractere sur deux octets
les octets suivant le premier octet ont leur premier bit de poids fort a 1 suivis d'un zero puis 6 bits contenant une partie du code du caractere
reprenons l'exemple
11000011
10101001
donc le caractere est ici encodé sur deux octets (deux bits de poids fort a un sur le premier) la valeur du caractere est egal a
premier octet second octet
00011 101001
ce qui une fois rassemblé donne
00011101001 = 233 soit le caracter é
avec utf8 tu peux ainsi utiliser une valeur allant de
0 a 2097151 a cause de la limite de 4 octets maximum utilises pour encoder un caractere et de 6 bit maximum par octets utilisable pour l'encodage
pour l'encodage c'est simple
tu veux encoder le caractère dont le code utf8 serais 45812
en binaire cela donne :
1011001011110100
on le decoupe en partant de la droite en tronçons de 6 bits
1011 001011 110100
ce qui donne 3 octets pour l'encoder
si le premier groupe de bits est plus grand que 4 bits il faut rajouter un octet pour l'encodage la ce n'est pas le cas
on ajoute les bits de poids forts
3 octets
11101011
10001011
10110100
pour le nombre suivant c'est presque pareil
111348
11011001011110100
11011 001011 110100
la premiere sequence est plus grande que 4 bits on ne peux pas encoder le nombre sur 3 octets car cela donnerais un chiffre sur 9 bits pour le premier troncon a cause des 3 bits de poids fort et du 0 de separation
111011011
donc on l'encode sur 4 octets
ce qui donne
11110000
10011011
10001011
10110100
voila j'espère que tu as compris comment l'utf8 fonctionne.
cela ne sert pas a réduire la place que prend un texte mais a pourvoir afficher un nombre conséquent de caractères dans un texte bien au dela des 255 caractères de la norme ASCII