Cet adorable Unicode



Voici une liste mise à jour des plus beaux "goodies" Unicode, ainsi que des packages et des ressources

Unicode est génial! Avant son apparition, la communication internationale était épuisante: chacune définissait son propre jeu de caractères étendu séparé dans la moitié supérieure de l'ASCII (les soi-disant pages de codes). Cela a créé un conflit. Pensez simplement que les Allemands ont dû négocier avec les Coréens, où se trouve la page de codes. Heureusement, Unicode est apparu et a introduit une norme commune. Unicode 8.0 couvre plus de 120 000 caractères de plus de 129 scripts. À la fois moderne et ancien, et toujours pas décrypté. Unicode prend en charge le texte de gauche à droite et de droite à gauche, superpose les caractères et comprend une variété de symboles et d'émojis culturels, politiques, religieux. Unicode est incroyablement humain et ses capacités sont largement sous-estimées.

Table des matières



Brève introduction


Quels caractères sont inclus dans Unicode Standard?


La norme Unicode définit les codes des caractères dans les principales langues modernes. Ce sont des scripts alphabétiques européens, des scripts du Moyen-Orient de droite à gauche et de nombreux scripts asiatiques.

La norme contient également des signes de ponctuation, des signes diacritiques, des symboles mathématiques, des symboles techniques, des flèches, des dingbats, des emojis, etc. Elle fournit des codes pour les signes diacritiques qui changent les signes de caractères, tels que les tildes (~). Ils sont utilisés en combinaison avec ceux de base pour représenter des caractères accentués (par exemple, ñ). En général, la version 9.0 d'Unicode fournit des codes pour 128 172 caractères des alphabets du monde, des jeux d'idéogrammes et des collections de caractères.

Les caractères les plus courants sont placés dans les premiers 64K points de code, une zone de l'espace de code appelée le plan multilingue principal, ou BMP pour faire court. Il y a seize autres plans supplémentaires disponibles pour encoder d'autres caractères, avec plus de 850 000 points de code inutilisés. Ils peuvent être utiles pour ajouter de nouveaux personnages aux futures versions de la norme.

La norme Unicode réserve également des points de code pour un usage privé. Les fournisseurs ou les utilisateurs finaux peuvent les désigner dans leurs propres systèmes pour leurs personnages ou les utiliser avec des polices spécialisées. Le BMP a 6400 points de code pour un usage privé et 131 068 points de code supplémentaires pour un usage privé, si 6400 n'est pas suffisant pour des applications spécifiques.

Encodages de caractères Unicode


Les normes de codage de caractères déterminent non seulement l'identité de chaque caractère et sa valeur numérique ou point de code, mais également la façon dont cette valeur est représentée en bits.

La norme Unicode définit trois formes de codage qui permettent la transmission des mêmes données: un octet, un mot et un double mot (c'est-à-dire 8, 16 ou 32 bits par unité de code). Les trois formulaires codent le même jeu de caractères commun et peuvent être efficacement convertis les uns aux autres sans perte de données. Le consortium Unicode approuve pleinement l'utilisation de l'une de ces formes de codage comme moyen convenu de mettre en œuvre la norme Unicode.

UTF-8 est populaire pour le HTML et les protocoles similaires. UTF-8 est un moyen de convertir tous les caractères Unicode en un codage à longueur d'octet variable. Son avantage est que les caractères Unicode qui correspondent à l'ensemble ASCII familier ont les mêmes valeurs d'octet que ASCII, et les caractères Unicode convertis en UTF-8 peuvent être utilisés avec de nombreux logiciels existants sans modifications majeures du logiciel.

UTF-16 est populaire dans de nombreux environnements où il est nécessaire d'équilibrer un accès efficace aux caractères avec un stockage économique. Il est assez compact et tous les caractères fréquemment utilisés sont placés dans un bloc de code 16 bits, tandis que tous les autres caractères sont disponibles via des paires de blocs de code 16 bits.

UTF-32 est utile lorsque la quantité de mémoire n'est pas un problème, mais nécessite l'accès aux caractères dans un seul code à largeur fixe. Ici, chaque caractère Unicode est codé dans un seul bloc de code 32 bits.

Les trois formes de codage ne nécessitent pas plus de 4 octets (ou 32 bits) pour chaque caractère.

Parlez de chiffres


Le jeu de caractères Unicode est divisé en 17 segments principaux (plans), qui sont ensuite divisés en blocs. Dans chaque avion, il y a une place pour 65 536 (2 16 ) points de code, ce qui crée un total de 1 114 112 points de code. Il existe deux «avions à usage privé» (n ° 16 et n ° 17) qui sont attribués à la discrétion des entreprises / utilisateurs. Ils ont 131 072 points de code.

Non.Le titreGamme
1.Avion multilingue principal(de U + 0000 à U + FFFF)
2.Avion multilingue supplémentaire(de U + 10000 à U + 1FFFF)
3.Plan idéographique supplémentaire(de U + 20 000 à U + 2FFFF)
4.Plan idéographique tertiaire(de U + 30000 à U + 3FFFF)
5.Plan 5 (non utilisé)(de U + 40000 à U + 4FFFF)
6.Avion 6 (non utilisé)(de U + 50 000 à U + 5FFFF)
7.Avion 7 (non utilisé)(de U + 60 000 à U + 6FFFF)
8.Avion 8 (non utilisé)(de U + 70 000 à U + 7FFFF)
9.Avion 9 (non utilisé)(de U + 80 000 à U + 8FFFF)
10.Avion 10 (non utilisé)(de U + 90 000 à U + 9FFFF)
11.Avion 11 (non utilisé)(de U + A0000 à U + AFFFF)
12.Avion 12 (non utilisé)(de U + B0000 à U + BFFFF)
13.Avion 13 (non utilisé)(de U + C0000 à U + CFFFF)
14.Avion 14 (non utilisé)(de U + D0000 à U + DFFFF)
15.Avion supplémentaire spécialisé(de U + E0000 à U + EFFFF)
16.Espace supplémentaire pour usage privé - A(de U + F0000 à U + FFFFF)
17.Espace supplémentaire pour usage privé - B(de U + 100000 à U + 10FFFF)

Le premier avion est appelé le principal avion multilingue ou BMP. Il contient des points de code de U + 0000 à U + FFFF, c'est-à-dire les caractères les plus couramment utilisés. Les seize plans restants (U + 010000 → U + 10FFFF) sont appelés supplémentaires ou astraux.

Paires de substitution UTF-16


Les symboles en dehors du plan principal, comme un tétragramme qui signifie le centre (U + 1D306), peuvent être encodés en UTF-16 avec seulement deux unités de code 16 bits: 0xD834 0xDF06. C'est ce qu'on appelle une paire de substitution. Veuillez noter qu'une paire de substitution ne représente qu'un seul caractère.

La première unité de code d'une paire de substitution se situe toujours dans la plage de 0xD800 à 0xDBFF et est appelée la partie supérieure de la paire.

La deuxième unité de code de la paire de substitution se situe toujours dans la plage de 0xDC00 à 0xDFFF et est appelée le bas de la paire.

Matthias Binens

Paire de substitution: représentation d'un symbole abstrait, consistant en une séquence de deux unités de code de 16 bits, où la première valeur de la paire est l'unité de code de substitution supérieure et la seconde est l'unité de code de substitution inférieure. Les paires de substitution ne sont utilisées qu'en UTF-16.

Unicode 8.0 Chapitre 3.8 - Surrogates

Calcul des paires de substitution


Le caractère Unicode «Pile of shit» (U + 1F4A9) dans UTF-16 devra être codé comme une paire de substitution, c'est-à-dire deux substituts. Pour convertir n'importe quel point de code en une paire de substitution, utilisez cet algorithme (en JavaScript). Gardez à l'esprit que nous utilisons la notation hexadécimale.

var High_Surrogate = function(Code_Point){ return Math.floor((Code_Point - 0x10000) / 0x400) + 0xD800 }; var Low_Surrogate = function(Code_Point){ return (Code_Point - 0x10000) % 0x400 + 0xDC00 }; // Reverses The Conversion var Code_Point = function(High_Surrogate, Low_Surrogate){ return (High_Surrogate - 0xD800) * 0x400 + Low_Surrogate - 0xDC00 + 0x10000; }; 



Composition et décomposition


Unicode comprend un mécanisme pour changer la forme d'un caractère, ce qui étend considérablement l'ensemble de glyphes pris en charge. Cela s'applique aux diacritiques combinables. Ils sont insérés après le personnage principal. Plusieurs marques diacritiques peuvent être appliquées à la même marque. Unicode contient également des versions précompilées de la plupart de ces combinaisons pour une utilisation normale.

Certaines séquences de caractères peuvent également être représentées comme un seul caractère appelé caractère précomposé, alias caractère composite. Par exemple, le caractère [ü] peut être codé comme le seul point de code U + 00FC ou comme le caractère de base U + 0075 (u), suivi du caractère non autonome U + 0308 (¨). La norme Unicode code les caractères composés pour la compatibilité avec les normes établies, telles que Latin 1, qui comprend de nombreux caractères composés, tels que [ü] et [ñ].

Les caractères composés peuvent être développés pour des raisons de cohérence ou d'analyse. Par exemple, lors du tri alphabétique, le symbole [ü] peut être décomposé en [u] suivi du symbole non indépendant [¨]. Après une telle décomposition, l'algorithme est plus facile à travailler avec une séquence de caractères. Cela facilite le tri dans les langues où les modificateurs de caractères n'affectent pas l'ordre alphabétique. La norme Unicode définit l' ordre de décomposition pour tous les caractères composites. Il définit également des formes de normalisation pour fournir des représentations uniques de personnages.

Mythes Unicode


Extrait des diapositives de la présentation de Mark Davis "Mythes of Unicode" .

  • Unicode n'est qu'un code 16 bits . - Certaines personnes croient à tort que Unicode est juste un code 16 bits, dans lequel chaque caractère occupe 16 bits, et donc il y a 65 536 caractères possibles. En fait, ce n'est pas entièrement vrai. C'est le mythe Unicode le plus courant, donc si vous le pensiez aussi avant, ne vous découragez pas.
  • Vous pouvez prendre n'importe quel point de code qui n'est pas utilisé pour vos besoins . - Non. Un jour, cet endroit sera remplacé par un autre symbole. Au lieu de cela, utilisez des avions pour un usage privé ou des zones sans caractères dans chaque avion où il n'y aura pas de caractères par défaut.
  • Chaque point de code Unicode représente un caractère . - Non. Il existe de nombreux points sans caractères (FFFE, FFFF, 1FFFE, etc.). De plus, des points de code de substitution, des points de code privés et inutilisés, ainsi que des "caractères" de contrôle / formatage (RLM, ZWNJ, etc.)
  • Unicode manque d'espace . - S'il se remplissait linéairement, il se serait terminé en 2140. Mais l'endroit ne se remplit pas linéairement. Plans futurs voir ici .
  • Tous les personnages sont appariés un à un . - Non. Les options sont les suivantes:
    • Un à plusieurs: (β → SS)
    • Compte tenu du contexte: (... Σ ← → ... ς et en même temps ... ΣΤ ... ← → ... στ ...)
    • En fonction des paramètres régionaux: (I ← → ı et en même temps © ← → i)

Encodages d'application Unicode


Type de codageExemple
Objet HTML (décimal)
Objet HTML (hex)
Code de contrôle d'URL% F0% 9F% 96% 96
UTF-8 (hex)0xF0 0x9F 0x96 0x96 (f09f9696)
UTF-8 (binaire)11110000: 10011111: 10010110: 10010110
UTF-16 / UTF-16BE (hex)0xD83D 0xDD96 (d83ddd96)
UTF-16LE (hex)0x3DD8 0x96DD (3dd896dd)
UTF-32 / UTF-32BE (hex)0x0001F596 (0001f596)
UTF-32LE (hex)0x96F50100 (96f50100)
Séquence d'échappement octale\ 360 \ 237 \ 226 \ 226

Code source


Type de codageExemple
Javascript\ u1F596
Json\ u1F596
C\ u1F596
C ++\ u1F596
Java\ u1F596
Python\ u1F596
Perl\ x {1F596}
Rubis\ u {1F596}
CSS\ 01F596

Liste de personnages incroyables.



Le partage d'un document peut rapidement transformer l'édition en une bataille écrite de rap, menée par un arrangement de plus en plus confus de gestionnaires de U + 202a à U + 202e

Caractères spéciaux


Le Consortium Unicode a publié un diagramme de ponctuation général où vous pouvez trouver plus d'informations.

SymboleLe titreLa description
''U + FEFF Espace insécable de largeur nulle (Byte Order Mark - BOM)Il a une importante propriété d'unicité lors du changement de l'ordre des octets. Il a également une largeur et une invisibilité nulles. Dans un logiciel inapproprié (comme un interpréteur PHP), cela conduit à toutes sortes d'exemples de comportement amusant.
'￯'Nomenclature inversée '\ uFFEF'Pas assimilé à un caractère, sauf pour le début du texte.
'​''\ u200B' Espace insécable de largeur nulleUn symbole sans apparence et sans effet, sauf pour éviter la formation de ligatures.
' 'U + 00A0 Espace insécableRassemble les personnages adjacents. Bien connu sous le nom de   en HTML.
''U + 00AD Trait d'union douxEn HTML, il fonctionne comme un espace de largeur nulle, mais lorsqu'il rencontre la fin d'une ligne (et seulement dans ce cas), il montre un trait d'union.
'‍'U + 200D Signe de largeur nulle (avec union)Provoque la connexion de caractères voisins (par exemple, des caractères arabes ou des emojis pris en charge). Peut être utilisé pour les emojis combinés séquentiellement.
'⁠'Connecteur de mots U + 2060Identique à U + 00A0, mais complètement invisible. Bon pour @ font-face sur Twitter.
' 'U + 1680 personnage spatial OghamMarque un espace qui ressemble à un tiret. Idéal pour rapprocher les programmeurs de la folie: 1 + 2 === 3.
';'U + 037E point d'interrogation grecRessemble à un point-virgule. Aussi une façon amusante de troller les développeurs.
'‭'U + 202DChange la direction du texte de gauche à droite.
'‮'U + 202EChange la direction du texte de droite à gauche.
'ꓸ'U + A4F8 Lisu lettre ton mya tiDouble pour le point.
'ꓹ'U + A4F9 Lisu lettre ton na poDouble pour une virgule.
'ꓼ'U + A4FC Lisu lettre ton mya naDouble pour le point-virgule.
'ꓽ'U + A4FD Lisu lettre ton mya jeuDouble pour le colon.
'︀'Sélecteurs d'options (de U + FE00 à U + FE0F et de U + E0100 à U + E01EF)Un bloc de 256 caractères de largeur nulle possédant la propriété ID_Continue, c'est-à-dire, peut être utilisé dans les noms de variable (pas la première lettre). Ce qui les rend spéciaux, c'est que le curseur de la souris passe dessus, car ils combinent des caractères, contrairement à la plupart des autres caractères de largeur nulle.
'ᅟ'U + 115F Placeholder Hangul ChosonRemplit essentiellement l'espace. Rendu en tant que caractère de largeur nulle (invisible) sauf s'il est explicitement pris en charge dans le rendu. Marqué comme ID_Start
'ᅠ'U + 1160 Placeholder ChunsonRemplit peut-être l'espace? Rendu en tant que caractère de largeur nulle (invisible) sauf s'il est explicitement pris en charge dans le rendu. Marqué comme ID_Start
'ㅤ'U + 3164 agrégat HangulEn général, il remplit l'espace. Rendu en tant que caractère de largeur nulle (invisible) sauf s'il est explicitement pris en charge dans le rendu. Marqué comme ID_Start

Attendez ... qu'est-ce que je viens de lire?

Les identifiants variables peuvent inclure des espaces!


L'espace réservé U + 3164 Hangul s'affiche sous la forme d'un grand espace. Si le caractère n'est clairement pas pris en charge dans le rendu , il est alors affiché comme complètement invisible (et ne prend pas d'espace, c'est-à-dire "largeur nulle"). Cela signifie que vous ne verrez jamais un caractère de remplacement de caractère laid ( ).

Je ne sais pas encore pourquoi U + 3164 est chargé de se comporter de cette façon. Fait intéressant, U + 3164 a été ajouté à Unicode dans la version 1.1 (1993) - les spécialistes du Consortium ont donc eu beaucoup de temps pour y réfléchir. Quoi qu'il en soit, voici quelques exemples.

 > var ᅟ = 'foo'; undefined > ᅟ 'foo' > var ㅤ= alert; undefined > var foo = 'bar' undefined > if ( foo ===ㅤ`baz` ){} // alert undefined > var varㅤfooㅤ\u{A60C}ㅤπ = 'bar'; undefined > varㅤfooㅤꘌㅤπ 'bar' 

** Remarque: ** J'ai testé le rendu U + 3164 sur Ubuntu et OS X avec les paramètres suivants: `node`,` php`, `ruby`,` python3.5`, `scala`,` vim`, `cat` , `chrome` +` gistub gist '. Atom est le seul système qui échoue en affichant (incorrectement) des champs vides. Je n'ai pas encore vérifié le code dans Emacs et Sublime. Si je comprends bien, le consortium Unicode ne réaffectera pas ou ne renommera pas les caractères ou les points de code, mais il peut être persuadé de modifier les propriétés de caractères tels que ID_Start et ID_Continue.

Modificateurs


Zero Width Combiner (ZWJ) est un caractère non imprimable dans un ensemble informatique de certaines polices complexes, telles que l'arabe ou toute police indienne. Lorsqu'il est placé entre deux caractères qui autrement ne seraient pas connectés, ZWJ les force à imprimer sous une forme combinée.

Le Zero Width Disconnector (ZWNJ) est un caractère non imprimable dans les ensembles d'écriture informatisés avec ligatures. Lorsqu'il est placé entre deux caractères qui autrement seraient combinés en une ligature, ZWNJ les oblige à imprimer dans leurs formes finale et originale, respectivement. Agit comme un espace, mais est utilisé lorsqu'il est souhaitable de garder des mots proches les uns des autres ou de combiner un mot avec son morphème.

 > 'a' "a" > 'a\u{0308}' "ä" > 'a\u{20DE}\u{0308}' "a⃞̈" > 'a\u{20DE}\u{0308}\u{20DD}' "a⃞̈⃝" // Modifying Invisible Characters > '\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}' "‎‎‎‎‎‎‎‎‎‎" > '\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}'.length 10 

Collisions de transformées en majuscules


SymbolePoint de codeRésultat
ß0x00DFSS
ı0x0131I
ſ0x017FS
0xFB00FF
fi0xFB01FI
fl0xFB02FL
0xFB03FFI
0xFB04FFL
0xFB05ST
0xFB06ST

Collisions de conversion en minuscules


SymbolePoint de codeRésultat
K0x212Ak

Quirks et dépannage


  • La longueur de ligne est généralement déterminée par le nombre de points de code . Cela signifie que les paires de substitution seront considérées comme deux caractères. Plusieurs diacritiques peuvent être superposés à un symbole: a + ̈ == ̈a . Cela augmente la longueur de la chaîne, ne produisant qu'un seul caractère.
  • De même, l'inversion de chaîne devient souvent une tâche non triviale . Encore une fois, les paires de substitution et les diacritiques doivent être inversés ensemble. ES Reverser offre une assez bonne solution.
  • Les comparaisons majuscules et minuscules ne correspondent pas toujours . Ils peuvent s'exprimer dans de telles relations:

    • Un à plusieurs: (ß → SS)
    • Compte tenu du contexte: (... Σ ← → ... ς et ... ΣΤ ... ← → ... στ ...)
    • En fonction des paramètres régionaux: (I ← → ı et İ ← → i)

    Une à plusieurs comparaisons


    La plupart des caractères ci-dessous expriment leurs correspondances un-à-plusieurs en majuscules et d'autres en minuscules. En principe, la liste peut être divisée en deux parties.

    Point de codeSymboleLe titreCaractère associéPoints de code associés
    U + 00DFßEscet latin minuscule (S aigu)s , sU + 0073, U + 0073
    U + 0130İLettre majuscule latine "I" avec un point au-dessusi , ̇U + 0069, U + 0307
    U + 0149ʼnLettre minuscule latine "n" de l'apostrophe précédenteʼ , nU + 02BC, U + 006E
    U + 01F0ǰLettre minuscule latine jj , ̌U + 006A, U + 030C
    U + 0390ΐIota grec en minuscules avec dialyse et tonos.ι , ̈ ,U + 03B9, U + 0308, U + 0301
    U + 03B0ΰLettre minuscule grecque ipsilon avec dialyse et tonos.υ , ̈ ,U + 03C5, U + 0308, U + 0301
    U + 0587ևLigature arménienne minuscule ech yiwnե , ւU + 0565, U + 0582
    U + 1E96Lettre minuscule latine h avec une ligne ci-dessoush ,U + 0068, U + 0331
    U + 1E97Lettre minuscule latine t avec dieresist , ̈U + 0074, U + 0308
    U + 1E98Lettre minuscule latine w avec anneau au-dessusw , ̊U + 0077, U + 030A
    U + 1E99Lettre minuscule latine y avec anneau au-dessusy , ̊U + 0079, U + 030A
    U + 1E9ALettre minuscule latine a avec la moitié droite de l'anneaua , ʾU + 0061, U + 02BE
    U + 1E9ELettre majuscule latine aigus ss , sU + 0073, U + 0073
    U + 1F50Lettre minuscule grecque ipsilon avec psilυ , ̓U + 03C5, U + 0313
    U + 1F52Lettre grecque minuscule ipsilon avec psili et variaυ , ̓ ,U + 03C5, U + 0313, U + 0300
    U + 1F54Lettre minuscule grecque ipsilon avec psily et oxyυ , ̓ ,U + 03C5, U + 0313, U + 0301
    U + 1F56Lettre minuscule grecque ipsilon avec psily et périsomeυ , ̓ ,U + 03C5, U + 0313, U + 0342
    U + 1F80Lettre minuscule grecque alpha avec psili et ipogemen , ιU + 1F00, U + 03B9
    U + 1F81Lettre minuscule grecque alpha avec dasia et ipogemen , ιU + 1F01, U + 03B9
    U + 1F82Lettre minuscule grecque alpha avec psilia et varia et ipogemen , ιU + 1F02, U + 03B9
    U + 1F83Lettre minuscule grecque alpha avec dasia et varia et ipogemen , ιU + 1F03, U + 03B9
    U + 1F84Lettre minuscule grecque alpha avec psily et oxy et ipogemen , ιU + 1F04, U + 03B9
    U + 1F85Lettre minuscule grecque alpha avec dasia et oxy et ipogemen , ιU + 1F05, U + 03B9
    U + 1F86Lettre minuscule grecque alpha avec psily et perispomenti et ipogemen , ιU + 1F06, U + 03B9
    U + 1F87Lettre grecque minuscule alpha avec dasia et perispomenti et hypogrammen , ιU + 1F07, U + 03B9
    U + 1F88Lettre majuscule grecque alpha avec psil et programmeurs , ιU + 1F00, U + 03B9
    U + 1F89Lettre majuscule grecque alpha avec dasia et programmemen , ιU + 1F01, U + 03B9
    U + 1F8ALettre majuscule grecque alpha avec psilia et varia et programmes , ιU + 1F02, U + 03B9
    U + 1F8BLettre majuscule grecque alpha avec dasia et varia et prog , ιU + 1F03, U + 03B9
    U + 1F8CLettre majuscule grecque alpha avec psily et oxy et prog , ιU + 1F04, U + 03B9
    U + 1F8DLettre majuscule grecque alpha avec dasia et oxy et programmemen , ιU + 1F05, U + 03B9
    U + 1F8ELettre majuscule grecque alpha avec psily et perispomenti et programmation , ιU + 1F06, U + 03B9
    U + 1F8FLettre majuscule grecque alpha avec dasia et perispomenti et progs , ιU + 1F07, U + 03B9
    U + 1F90Lettre minuscule grecque ceci avec psily et ipogemen , ιU + 1F20, U + 03B9
    U + 1F91Lettre minuscule grecque a avec dasia et ipogemen , ιU + 1F21, U + 03B9
    U + 1F92Lettre minuscule grecque ceci avec psilia et varia et ipogemen , ιU + 1F22, U + 03B9
    U + 1F93Lettre minuscule grecque eta avec dasia et varia et ipogemen , ιU + 1F23, U + 03B9
    U + 1F94Lettre minuscule grecque A avec psilia et oksia et ipogemen , ιU + 1F24, U + 03B9
    U + 1F95Lettre minuscule grecque eta avec dasia et oksia et ipogemen , ιU + 1F25, U + 03B9
    U + 1F96Lettre minuscule grecque ceci avec psily et perispomenti et ipogemen , ιU + 1F26, U + 03B9
    U + 1F97Lettre minuscule grecque eta avec dasia et perisopmenti et hypogrammen , ιU + 1F27, U + 03B9
    U + 1F98Lettre majuscule grecque ceci avec psilah et programmes , ιU + 1F20, U + 03B9
    U + 1F99Lettre majuscule grecque avec Dasia et programmeurs , ιU + 1F21, U + 03B9
    U + 1F9ALettre majuscule grecque ceci avec psilia et varia et prosgrammemeny , ιU + 1F22, U + 03B9
    U + 1F9BLettre majuscule grecque ceci avec dasia et varia et prosgrammemeny , ιU + 1F23, U + 03B9
    U + 1F9CLettre majuscule grecque ceci avec psilia et oxy et programmen , ιU + 1F24, U + 03B9
    U + 1F9DLettre majuscule grecque avec Dasia et Oksia et programmeurs , ιU + 1F25, U + 03B9
    U + 1F9ELettre majuscule grecque ceci avec psily et perispomenty et prosgrammeny , ιU + 1F26, U + 03B9
    U + 1F9FLettre majuscule grecque ceci avec dasia et perispomenti et programmen , ιU + 1F27, U + 03B9
    U + 1FA0Lettre minuscule grecque oméga avec psili et ipogemen , ιU + 1F60, U + 03B9
    U + 1FA1Oméga lettre minuscule grecque avec dasia et ipogemen , ιU + 1F61, U + 03B9
    U + 1FA2Lettre minuscule grecque oméga avec psilia et varia et ipogemen , ιU + 1F62, U + 03B9
    U + 1FA3Lettre minuscule grecque oméga avec dasia et varia et ipogemen , ιU + 1F63, U + 03B9
    U + 1FA4Lettre minuscule grecque oméga avec psily et oxy et ipogemen , ιU + 1F64, U + 03B9
    U + 1FA5Lettre minuscule grecque oméga avec dasia et oxy et ipogemen , ιU + 1F65, U + 03B9
    U + 1FA6Omega lettre minuscule grecque avec psily et perispomenti et ipogemen , ιU + 1F66, U + 03B9
    U + 1FA7Omega lettre minuscule grecque avec dasia et perispomenti et hypogrammemen , ιU + 1F67, U + 03B9
    U + 1FA8Lettre majuscule grecque oméga avec psili et programme , ιU + 1F60, U + 03B9
    U + 1FA9Lettre majuscule grecque Omega avec dasia et programmemen , ιU + 1F61, U + 03B9
    U + 1FAALettre majuscule grecque oméga avec psilia et varia et prosgrammemeny , ιU + 1F62, U + 03B9
    U + 1FABLettre majuscule grecque Omega avec dasia et varia et programmeurs , ιU + 1F63, U + 03B9
    U + 1FACLettre majuscule grecque oméga avec psilia et oxy et progamemen , ιU + 1F64, U + 03B9
    U + 1FADLettre majuscule grecque oméga avec dasia et oksia et programmeurs , ιU + 1F65, U + 03B9
    U + 1FAELettre majuscule grecque oméga avec psily et perispomenti et prosgrammemeny , ιU + 1F66, U + 03B9
    U + 1FAFLettre majuscule grecque oméga avec dasia et perispomenti et prosgrammemeny , ιU + 1F67, U + 03B9
    U + 1FB2Lettre minuscule grecque alpha avec varia et ipogemen , ιU + 1F70, U + 03B9
    U + 1FB3Lettre minuscule grecque alpha avec ogogerammeniα , ιU + 03B1, U + 03B9
    U + 1FB4Lettre minuscule grecque alpha avec oxy et ipogemenά , ιU + 03AC, U + 03B9
    U + 1FB6Lettre minuscule grecque alpha avec perispomentiα ,U + 03B1, U + 0342
    U + 1FB7Lettre minuscule grecque alpha avec perispomenti et ipogemenα , ͂ ιU + 03B1, U + 0342, U + 03B9
    U + 1FBCLettre majuscule grecque alpha avec progsα , ιU + 03B1, U + 03B9
    U + 1FC2Lettre minuscule grecque et avec varia et ipogemen , ιU + 1F74, U + 03B9
    U + 1FC3Lettre minuscule grecque A avec ipogemenη , ιU + 03B7, U + 03B9
    U + 1FC4Lettre minuscule grecque eta avec oxy et ipogemenή , ιU + 03AE, U + 03B9
    U + 1FC6Lettre minuscule grecque a avec perispomentiη ,U + 03B7, U + 0342
    U + 1FC7Lettre minuscule grecque a avec perispomenti et ipogemenη , ͂ ιU + 03B7, U + 0342, U + 03B9
    U + 1FCCLettre majuscule grecque ceci avec progη , ιU + 03B7, U + 03B9
    U + 1FD2Iota minuscule grec avec dialyse et variaι , ̈ ,U + 03B9, U + 0308, U + 0300
    U + 1FD3Iota grec en minuscules avec dialyse et oxyι , ̈ ,U + 03B9, U + 0308, U + 0301
    U + 1FD6Grec iota minuscule avec perispomentiι ,U + 03B9, U + 0342
    U + 1FD7Iota grec en minuscules avec dialyse et pointι , ̈ ,U + 03B9, U + 0308, U + 0342
    U + 1FE2Lettre grecque minuscule ipsilon avec dialyse et varia.υ , ̈ ,U + 03C5, U + 0308, U + 0300
    U + 1FE3Lettre minuscule grecque ipsilon avec dialyse et oxy.υ , ̈ ,U + 03C5, U + 0308, U + 0301
    U + 1FE4Rho grec en minuscules avec psiliρ , ̓U + 03C1, U + 0313
    U + 1FE6Lettre minuscule grecque ipsilon avec perispomentiυ ,U + 03C5, U + 0342
    U + 1FE7Lettre minuscule grecque ipsilon avec dialyse et pointυ , ̈ ,U + 03C5, U + 0308, U + 0342
    U + 1FF2Oméga lettre minuscule grecque avec varia et ipogemen , ιU + 1F7C, U + 03B9
    U + 1FF3Lettre minuscule grecque oméga avec ogogerammeniω , ιU + 03C9, U + 03B9
    U + 1FF4Oméga lettre minuscule grecque avec oxia et ipogemenώ , ιU + 03CE, U + 03B9
    U + 1FF6Lettre minuscule grecque oméga avec perispomentiω ,U + 03C9, U + 0342
    U + 1FF7Omega lettre minuscule grecque avec perispomenti et ipogemenω , ͂ ιU + 03C9, U + 0342, U + 03B9
    U + 1FFCLettre majuscule grecque oméga avec programmeω , ιU + 03C9, U + 03B9
    U + FB00Ligature latine minuscule Fff fU + 0066, U + 0066
    U + FB01Ligature minuscule latine Fif , iU + 0066, U + 0069
    U + FB02Ligature latine minuscule Flf lU + 0066, U + 006C
    U + FB03Ligature latine minuscule Ffif , f , iU + 0066, U + 0066, U + 0069
    U + FB04Ligature latine minuscule Fflf , f , lU + 0066, U + 0066, U + 006C
    U + FB05Ligature latine minuscule longue STs , tU + 0073, U + 0074
    U + FB06Ligature minuscule latine Sts , tU + 0073, U + 0074
    U + FB13Ligature arménienne minuscule Men Nowմ , նU + 0574, U + 0576
    U + FB14Ligature arménienne minuscule Hommes Echմ , եU + 0574, U + 0565
    U + FB15Ligature arménienne minuscule Hommes Iniմ , իU + 0574, U + 056B
    U + FB16Ligature arménienne minuscule Vew Nowվ , նU + 057E, U + 0576
    U + FB17Ligature arménienne minuscule Homme Xehմ , խU + 0574, U + 056D

    Grands packages et bibliothèques


    • PhantomScript -: ghost :: flashlight: Exécution de JavaScript invisible et d'ingénierie sociale
    • ESReverser - Gestion des chaînes JavaScript basées sur Unicode .
    • mimic - Utilisation abusive d'Unicode
    • python-ftfy - Tente de créer la représentation maximale correcte et complète du texte reçu en Unicode.
    • vim-troll-stopper - Protégez votre code des trolls unicode.

    Emoji




    Unicode (diversity), . .

    , , . — . :

    Recette
    U+1F469 U+200D U+2764 U+FE0F U+200D U+1F469️‍️‍️‍couple with heart: woman, woman
    U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F466

    , .

    8.0 ( 2015 ) - . , ( , FitzpatrickSkinType.pdf). .

    Unicode

    CodeLe titre
    U+1F3FB-1-2
    U+1F3FC-3
    U+1F3FD-4
    U+1F3FE-5
    U+1F3FF-6

    , \u{1F466}\u{1F3FE} .


    +






    JavaScript (ES6)

    , ID_START , . , ID_CONTINUE , .

     // How convenient! var π = Math.PI; // Sometimes, you just have to use the Bad Parts of JavaScript: var ಠ_ಠ = eval; // Code, YU NO WORK?! var ლ_ಠ益ಠ_ლ = 42; // How about a JavaScript library for functional programming? var λ = function() {}; // Obfuscate boring variable names for great justice var \u006C\u006F\u006C\u0077\u0061\u0074 = 'heh'; // …or just make up random ones var Ꙭൽↈⴱ = 'huh'; // While perfectly valid, this doesn't work in most browsers: var foo\u200Cbar = 42; // This is *not* a bitwise left shift (`<<`): var 〱〱 = 2; // This is, though: 〱〱 << 〱〱; // 8 // Give yourself a discount: var price_9̶9̶_89 = 'cheap'; // Fun with Roman numerals var Ⅳ = 4; var Ⅴ = 5; Ⅳ + Ⅴ; // 9 // Cthulhu was here var Hͫ̆̒̐ͣ̊̄ͯ͗͏̵̗̻̰̠̬͝ͅE̴̷̬͎̱̘͇͍̾ͦ͊͒͊̓̓̐_̫̠̱̩̭̤͈̑̎̋ͮͩ̒͑̾͋͘Ç̳͕̯̭̱̲̣̠̜͋̍O̴̦̗̯̹̼ͭ̐ͨ̊̈͘͠M̶̝̠̭̭̤̻͓͑̓̊ͣͤ̎͟͠E̢̞̮̹͍̞̳̣ͣͪ͐̈T̡̯̳̭̜̠͕͌̈́̽̿ͤ̿̅̑Ḧ̱̱̺̰̳̹̘̰́̏ͪ̂̽͂̀͠ = 'Zalgo'; 

    CSS .

     <!-- place this within the document head --> <meta charset="UTF-8" /> <!-- error message --> <div class="ಠ_ಠ">You do not have access to this page.</div> <!-- success message --> <div class="">Your changes have been saved successfully!</div> 

     .ಠ_ಠ { border: 1px solid #f00; } . { background: lightgreen; } 

    HTML


    HTML- , , .

    , HTML .

     // U+1160 HANGUL JUNGSEONG FILLER transformAllTags('ᅠ'); // An actual HTML element node designed to look like a comment node, using the U+01C3 LATIN LETTER RETROFLEX CLICK // <ǃ-- name="viewport" content="width=device-width"></ǃ--> transformAllTags('ǃ--'); // or even <ᅠ⃝ transformAllTags('\u{1160}\u{20dd}'); // and for a bonus, all existing tag names will have each character ensquared. h⃞t⃞m⃞l⃞ transformAllTags(); function transformAllTags (newName){ // querySelectorAll doesn't actually return an array. Array.from(document.querySelectorAll('*')) .forEach(function(x){ transformTag(x, newName); }); } function wonky(str){ return str.split('').join('\u{20de}') + '\u{20de}'; } function transformTag(tagIdOrElem, tagType){ var elem = (tagIdOrElem instanceof HTMLElement) ? tagIdOrElem : document.getElementById(tagIdOrElem); if(!elem || !(elem instanceof HTMLElement))return; var children = elem.childNodes; var parent = elem.parentNode; var newNode = document.createElement(tagType||wonky(elem.tagName)); for(var a=0;a<elem.attributes.length;a++){ newNode.setAttribute(elem.attributes[a].nodeName, elem.attributes[a].value); } for(var i= 0,clen=children.length;i<clen;i++){ newNode.appendChild(children[0]); //0...always point to the first non-moved element } newNode.style.cssText = elem.style.cssText; parent.replaceChild(newNode,elem); } 

    :

     function testBegin(str){ try{ eval(`document.createElement( '${str}' );`) return true; } catch(e){ return false; } } function testContinue(str){ try{ eval(`document.createElement( 'a${str}' );`) return true; } catch(e){ return false; } } 

    :

     // Test if dashes can start an HTML Tag > testBegin('-') < false > testContinue('-') < true > testBegin('ᅠ-') // Prepend dash with U+1160 HANGUL JUNGSEONG FILLER < true 


    TrueType OpenType UTF-8, 65 535 . 1,1 UTF-8, .








    256 .



    , () (CJK). , , « ».


    . 17- .

    Le titreÀ partir de#
    U+0000U+007F128
    — 1U+0080U+00FF128
    — AU+0100U+017F128
    — BU+0180U+024F208
    U+0250U+02AF96
    U+02B0U+02FF80
    U+0300U+036F112
    U+0370U+03FF135
    U+0400U+04FF256
    U+0500U+052F48
    U+0530U+058F89
    U+0590U+05FF87
    U+0600U+06FF255
    U+0700U+074F77
    U+0750U+077F48
    U+0780U+07BF50
    U+07C0U+07FF59
    U+0800U+083F61
    U+0840U+085F29
    — AU+08A0U+08FF50
    U+0900U+097F128
    U+0980U+09FF93
    U+0A00U+0A7F79
    U+0A80U+0AFF85
    U+0B00U+0B7F90
    U+0B80U+0BFF72
    U+0C00U+0C7F96
    U+0C80U+0CFF87
    U+0D00U+0D7F100
    U+0D80U+0DFF90
    U+0E00U+0E7F87
    U+0E80U+0EFF67
    U+0F00U+0FFF211
    U+1000U+109F160
    U+10A0U+10FF88
    U+1100U+11FF256
    U+1200U+137F358
    U+1380U+139F26
    U+13A0U+13FF92
    U+1400U+167F640
    U+1680U+169F29
    U+16A0U+16FF89
    U+1700U+171F20
    U+1720U+173F23
    U+1740U+175F20
    U+1760U+177F18
    U+1780U+17FF114
    U+1800U+18AF156
    U+18B0U+18FF70
    U+1900U+194F68
    U+1950U+197F35
    U+1980U+19DF83
    U+19E0U+19FF32
    U+1A00U+1A1F30
    U+1A20U+1AAF127
    U+1AB0U+1AFF15
    U+1B00U+1B7F121
    U+1B80U+1BBF64
    U+1BC0U+1BFF56
    U+1C00U+1C4F74
    -U+1C50U+1C7F48
    U+1CC0U+1CCF8
    U+1CD0U+1CFF41
    U+1D00U+1D7F128
    U+1D80U+1DBF64
    U+1DFFU+1DC0U+1DFF58
    U+1E00U+1EFF256
    U+1F00U+1FFF233
    U+2000U+206F111
    U+2070U+209F42
    U+20A0U+20CF31
    U+20D0U+20FF33
    U+2100U+214F80
    U+2150U+218F60
    U+2190U+21FF112
    U+2200U+22FF256
    U+2300U+23FF251
    U+2400U+243F39
    U+2440U+245F11
    U+2460U+24FF160
    U+2500U+257F128
    U+2580U+259F32
    U+25A0U+25FF96
    U+2600U+26FF256
    DingbatsU+2700U+27BF192
    — AU+27C0U+27EF48
    — AU+27F0U+27FF16
    U+2800U+28FF256
    — BU+2900U+297F128
    — BU+2980U+29FF128
    U+2A00U+2AFF256
    U+2B00U+2BFF206
    U+2C00U+2C5F94
    — CU+2C60U+2C7F32
    U+2C80U+2CFF123
    U+2D00U+2D2F40
    U+2D30U+2D7F59
    U+2D80U+2DDF79
    — AU+2DE0U+2DFF32
    U+2E00U+2E7F67
    U+2E80U+2EFF115
    U+2F00U+2FDF214
    U+2FF0U+2FFF12
    U+3000U+303F64
    U+3040U+309F93
    U+30A0U+30FF96
    U+3100U+312F41
    U+3130U+318F94
    U+3190U+319F16
    U+31A0U+31BF27
    U+31C0U+31EF36
    U+31F0U+31FF16
    U+3200U+32FF254
    U+3300U+33FF256
    — AU+3400U+4DBF6191
    « »U+4DC0U+4DFF64
    U+4E00U+9FFF20941
    U+A000U+A48F1165
    U+A490U+A4CF55
    U+A4D0U+A4FF48
    U+A500U+A63F300
    — BU+A640U+A69F96
    U+A6A0U+A6FF88
    U+A700U+A71F32
    — DU+A720U+A7FF159
    U+A800U+A82F44
    U+A830U+A83F10
    U+A840U+A87F56
    U+A880U+A8DF81
    U+A8E0U+A8FF30
    -U+A900U+A92F48
    U+A930U+A95F37
    — AU+A960U+A97F29
    U+A980U+A9DF91
    — BU+A9E0U+A9FF31
    U+AA00U+AA5F83
    — AU+AA60U+AA7F32
    -U+AA80U+AADF72
    U+AAE0U+AAFF23
    — AU+AB00U+AB2F32
    — EU+AB30U+AB6F54
    U+AB70U+ABBF80
    U+ABC0U+ABFF56
    U+AC00U+D7AF2
    — BU+D7B0U+D7FF72
    U+D800U+DB7F2
    U+DB80U+DBFF2
    U+DC00U+DFFF2
    U+E000U+F8FF2
    U+F900U+FAFF472
    U+FB00U+FB4F58
    — AU+FB50U+FDFF643
    U+FE00U+FE0F16
    U+FE10U+FE1F10
    U+FE20U+FE2F16
    U+FE30U+FE4F32
    U+FE50U+FE6F26
    — BU+FE70U+FEFF141
    U+FF00U+FFEF225
    U+FFF0U+FFFF7
    U+10000U+1007F88
    U+10080U+100FF123
    U+10100U+1013F57
    U+10140U+1018F77
    U+10190U+101CF13
    U+101D0U+101FF46
    U+10280U+1029F29
    U+102A0U+102DF49
    U+102E0U+102FF28
    U+10300U+1032F36
    U+10330U+1034F27
    U+10350U+1037F43
    U+10380U+1039F31
    U+103A0U+103DF50
    U+10400U+1044F80
    U+10450U+1047F48
    U+10480U+104AF40
    U+10500U+1052F40
    U+10530U+1056F53
    U+10600U+1077F341
    U+10800U+1083F55
    U+10840U+1085F31
    U+10860U+1087F32
    U+10880U+108AF40
    U+108E0U+108FF26
    U+10900U+1091F29
    U+10920U+1093F27
    U+10980U+1099F32
    U+109A0U+109FF90
    U+10A00U+10A5F65
    U+10A60U+10A7F32
    U+10A80U+10A9F32
    U+10AC0U+10AFF51
    U+10B00U+10B3F61
    U+10B40U+10B5F30
    U+10B60U+10B7F27
    U+10B80U+10BAF29
    U+10C00U+10C4F73
    U+10C80U+10CFF108
    U+10E60U+10E7F31
    U+11000U+1107F109
    U+11080U+110CF66
    -U+110D0U+110FF35
    U+11100U+1114F67
    U+11150U+1117F39
    U+11180U+111DF94
    U+111E0U+111FF20
    U+11200U+1124F61
    U+11280U+112AF38
    U+112B0U+112FF69
    U+11300U+1137F85
    U+11480U+114DF82
    U+11580U+115FF92
    U+11600U+1165F79
    U+11680U+116CF66
    U+11700U+1173F57
    -U+118A0U+118FF84
    U+11AC0U+11AFF57
    U+12000U+123FF922
    U+12400U+1247F116
    U+12480U+1254F196
    U+13000U+1342F1071
    U+14400U+1467F583
    U+16800U+16A3F569
    U+16A40U+16A6F43
    U+16AD0U+16AFF36
    U+16B00U+16B8F127
    U+16F00U+16F9F133
    U+1B000U+1B0FF2
    U+1BC00U+1BC9F143
    U+1BCA0U+1BCAF4
    U+1D000U+1D0FF246
    U+1D100U+1D1FF231
    U+1D200U+1D24F70
    « »U+1D300U+1D35F87
    U+1D360U+1D37F18
    U+1D400U+1D7FF996
    SignWritingU+1D800U+1DAAF672
    U+1E800U+1E8DF213
    U+1EE00U+1EEFF143
    U+1F000U+1F02F44
    U+1F030U+1F09F100
    U+1F0A0U+1F0FF82
    U+1F100U+1F1FF173
    U+1F200U+1F2FF57
    U+1F300U+1F5FF766
    U+1F600U+1F64F80
    U+1F650U+1F67F48
    U+1F680U+1F6FF98
    U+1F700U+1F77F116
    U+1F780U+1F7FF85
    — CU+1F800U+1F8FF148
    U+1F900U+1F9FF15
    — BU+20000U+2A6DF42676
    — CU+2A700U+2B73F60
    — DU+2B740U+2B81F27
    — EU+2B820U+2CEAF2
    U+2F800U+2FA1F542
    BalisesU+E0000U+E007F97
    U+E0100U+E01EF240
    — AU+F0000U+FFFFF4
    — BU+100000U+10FFFF4


    :

    • — - .
    • — , .
    • — .
    • — , . .
    • , — , . , .
    • — , . , [Ä] [A] [¨].
    • — .
    • — , , . .
    • — , .
    • — .

    : c codepoints.net .


Source: https://habr.com/ru/post/fr485148/


All Articles