La soluzione di compromesso che è stata infine trovata e sviluppata in Unicode è stata quella di rompere il presupposto  che ogni carattere dovrebbe sempre corrispondere direttamente a una particolare sequenza di bit. Invece, i caratteri verrebbero prima mappati su una rappresentazione intermedia universale sotto forma di numeri astratti chiamati punti di codice. I punti di codice sarebbero quindi rappresentati in una varietà di modi e con vari numeri predefiniti di bit per carattere  a seconda del contesto. La successiva versione Unicode 3.0 del 1999 introduce la bidirezionalità e la composizione di tabelle, mentre la 4.0 del 2001 include anche le lingue antiche.