Unicode est un standard informatique qui permet des échanges de textes dans différentes langues, à un niveau mondial. Il est développé par le Consortium Unicode, qui vise au codage de texte écrit en donnant à tout caractère de n'importe quel système d'écriture un nom et un identifiant numérique, et ce de manière unifiée, quelle que soit la plateforme informatique ou le logiciel utilisé.

Ce standard est lié à la norme qui décrit une table de caractères équivalente. La dernière version, , a été publiée le ...

Totalement compatible avec le jeu universel de caractères (JUC) de l', le standard Unicode l'étend en lui ajoutant un modèle complet de représentation et de traitement de textes, en conférant à chaque caractère un jeu de propriétés (qui peuvent être soit pour certaines, standardisées et stabilisées dans toutes les versions d'Unicode où le caractère a été encodé, soit informatives avec seulement une recommandation sur leur usage, qui peut évoluer en fonction des nouveaux besoins trouvés). Ces propriétés décrivent avec précision les relations sémantiques qui peuvent exister entre plusieurs caractères successifs d'un texte, et permettent de standardiser ou recommander des algorithmes de traitement qui préservent au maximum la sémantique des textes transformés. Unicode a pour objet de rendre un même texte utilisable à l'identique sur des systèmes informatiques totalement différents.

Le standard Unicode est constitué d'un répertoire de , couvrant plus de 150 écritures, d'un ensemble de tableaux de codes pour référence visuelle, d'une méthode de codage et de plusieurs codages de caractères standard, d'une énumération des propriétés de caractère (lettres majuscules, minuscules, symboles, ponctuation) d'un ensemble de fichiers de référence des données informatiques, et d'un certain nombre d'éléments liés, tels que des règles de normalisation, de décomposition, de tri, de rendu et d'ordre d'affichage bidirectionnel (pour l'affichage correct de texte contenant à la fois des caractères d'écritures de droite à gauche, comme l'arabe et l'hébreu, et de gauche à droite).

En pratique, Unicode reprend intégralement la norme , puisque cette dernière ne standardise que les caractères individuels en leur assignant un nom et un numéro normatif (appelé point de code) et une description informative très limitée, mais aucun traitement ni aucune spécification ou recommandation pour leur emploi dans l'écriture de langues réelles, ce que seul le standard Unicode définit précisément. L' fait normativement référence à certaines parties du standard Unicode (notamment ) ; Unicode est également une norme pour le traitement du texte et sert de base à de nombreuses autres normes.

Mission Unicode, dont la première publication remonte à , a été développé dans le but de remplacer l'utilisation de pages de code nationales.

Ces pages de code avaient dans le passé quelques problèmes. Par exemple, sur les fonctionnant en EBCDIC : lorsqu'une note de service électronique comportait un caractère « signe monétaire », le même texte plafonnant une dépense en dollars pour le lecteur américain faisait afficher sur un écran britannique le même montant en livres sterling, puisque le signe monétaire était différent dans chacun des deux pays.

Dans la pratique, tous les systèmes d'écriture ne sont pas encore présents, car un travail de recherche documentaire auprès de spécialistes peut encore s'avérer nécessaire pour des caractères rares ou des systèmes d'écriture peu connus (parce que disparus, par exemple). Cependant, les écritures les plus utilisées dans le monde sont représentées, ainsi que des règles sur la sémantique des caractères, leurs compositions et la manière de combiner ces différents systèmes. — Par exemple, comment insérer un système d'écriture de droite à gauche dans un système d'écriture de gauche à droite (texte bidirectionnel).

Standardisation

Interopérabilité avec le code ASCII Sous sa forme UTF-8, l'Unicode offre une certaine interopérabilité avec le code ASCII : en effet, les 128 caractères ASCII, y compris les caractères de contrôle, sont représentés de manière identique (sur un octet) en UTF-8 par les points de code U+0000 à U+007F.

Conformité d'un processus à Unicode Le standard Unicode définit des exigences permettant d'évaluer la conformité de l'implémentation d'un processus (ou d'un logiciel) à Unicode. Ces exigences concernent notamment (dans la ) : le traitement de points de code non assignés ; l'interprétation des séquences de caractères équivalentes ; ce qu'est une modification d'interprétation du texte ; le codage des caractères ; l'affichage du texte bidirectionnel ; la normalisation ; les algorithmes ; la casse.

Ces exigences permettent le support d'un sous-ensemble d'Unicode.

Alors que l' définit le même jeu de caractères qu'Unicode, la différence entre et Unicode tient essentiellement dans le surplus d'exigence de conformité fourni par Unicode.

Limitations Unicode est en 2016. le principal standard pour le codage informatique des caractères. Il sert à l'interopérabilité de logiciels, et permet par exemple de copier des textes utilisant des caractères de différents alphabets entre des logiciels différents, même n'ayant pas été spécifiquement conçus pour eux (par exemple un programme en caractères APL dans un texte LibreOffice ou dans un courriel sous Gmail). Tous les textes Unicode ne sont cependant pas codés de la même manière. Suivant la normalisation Unicode adoptée, un même signe graphique peut parfois être codé de différentes manières. Certains textes utilisent la convention , d'autres la convention Et le standard n'interdit pas de mélanger plusieurs conventions dans un même texte. Il en va de même pour les logiciels.

Cette coexistence de plusieurs façons d'écrire la même chose a été exploitée par les pirates dans les en leur permettant de déjouer des filtres : les pirates contournaient les interdictions de certaines chaînes de caractères jugées dangereuses tout simplement en les codant sous une autre forme, plus inhabituelle et de ce fait parfois non filtrée.

Unicode répond à ces limitations en apportant la notion d'équivalence canonique.

Normes et versions Le travail sur Unicode est parallèle et synchronisé avec celui sur la norme dont les objectifs sont les mêmes. L' est une norme internationale publiée en français et en anglais, qui ne précise ni les règles de composition de caractères, ni les propriétés sémantiques des caractères.

Unicode aborde cependant la problématique de la casse, du classement alphabétique, et de la combinaison d'accents et de caractères. Depuis la d'Unicode et dans toutes les versions suivantes, les caractères ont les mêmes identifiants que ceux de la norme : les répertoires sont maintenus parallèlement, à l'identique lors de leur standardisation définitive, les deux normes étant mises à jour presque simultanément. Les deux normes Unicode (depuis la ) et assurent une compatibilité ascendante totale : tout texte conforme à une version antérieure doit rester conforme dans les versions ultérieures.

Ainsi les caractères de la d'Unicode sont ceux de la norme . La d'Unicode classait , symboles et directives.

La d'Unicode, mise à jour en , comprenait : à usage privé, dont dans le plan multilingue de base (définis dans toutes les versions d'Unicode) et dans les deux derniers plans (depuis la version 2.0 d'Unicode), ce qui doit suffire à tous les usages ; plus de ou syllabes, chiffres ou nombres, symboles divers, signes diacritiques et signes de ponctuation, avec parmi eux : plus de idéographiques (pour l'écriture classique ou modernisée des langues chinoises, et utilisés en partie et en association avec d'autres écritures plus simples en japonais, en coréen classique, ainsi qu'en vietnamien classique) ; précomposées de l'alphabet hangûl (pour la langue coréenne moderne) ; plusieurs centaines de caractères de contrôle ou modificateurs spéciaux ; ainsi que de codes réservés de façon permanente, interdits pour le codage de texte (assignés dans toutes les versions d'Unicode). Soit un total de près de de codes assignés dans un espace pouvant contenir différents.

Quelques problèmes semblent cependant exister, pour le codage des caractères chinois, à cause de l'unification des jeux idéographiques utilisés dans différentes langues, avec une calligraphie légèrement différente et parfois signifiante, mais par Unicode qui a défini des sélecteurs de variantes et ouvert un registre de séquences normalisées qui les utilise.