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
ff0xFB00FF
fi0xFB01FI
fl0xFB02FL
ffi0xFB03FFI
ffl0xFB04FFL
ſt0xFB05ST
st0xFB06ST

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 + 1E96ẖLettre minuscule latine h avec une ligne ci-dessoush ,U + 0068, U + 0331
    U + 1E97ẗLettre minuscule latine t avec dieresist , ̈U + 0074, U + 0308
    U + 1E98ẘLettre minuscule latine w avec anneau au-dessusw , ̊U + 0077, U + 030A
    U + 1E99ẙLettre minuscule latine y avec anneau au-dessusy , ̊U + 0079, U + 030A
    U + 1E9AẚLettre minuscule latine a avec la moitié droite de l'anneaua , ʾU + 0061, U + 02BE
    U + 1E9EẞLettre majuscule latine aigus ss , sU + 0073, U + 0073
    U + 1F50ὐLettre minuscule grecque ipsilon avec psilυ , ̓U + 03C5, U + 0313
    U + 1F52ὒLettre grecque minuscule ipsilon avec psili et variaυ , ̓ ,U + 03C5, U + 0313, U + 0300
    U + 1F54ὔLettre minuscule grecque ipsilon avec psily et oxyυ , ̓ ,U + 03C5, U + 0313, U + 0301
    U + 1F56ὖLettre minuscule grecque ipsilon avec psily et périsomeυ , ̓ ,U + 03C5, U + 0313, U + 0342
    U + 1F80ᾀLettre minuscule grecque alpha avec psili et ipogemenἀ , ιU + 1F00, U + 03B9
    U + 1F81ᾁLettre minuscule grecque alpha avec dasia et ipogemenἁ , ιU + 1F01, U + 03B9
    U + 1F82ᾂLettre minuscule grecque alpha avec psilia et varia et ipogemenἂ , ιU + 1F02, U + 03B9
    U + 1F83ᾃLettre minuscule grecque alpha avec dasia et varia et ipogemenἃ , ιU + 1F03, U + 03B9
    U + 1F84ᾄLettre minuscule grecque alpha avec psily et oxy et ipogemenἄ , ιU + 1F04, U + 03B9
    U + 1F85ᾅLettre minuscule grecque alpha avec dasia et oxy et ipogemenἅ , ιU + 1F05, U + 03B9
    U + 1F86ᾆLettre minuscule grecque alpha avec psily et perispomenti et ipogemenἆ , ιU + 1F06, U + 03B9
    U + 1F87ᾇLettre grecque minuscule alpha avec dasia et perispomenti et hypogrammenἇ , ιU + 1F07, U + 03B9
    U + 1F88ᾈLettre majuscule grecque alpha avec psil et programmeursἀ , ιU + 1F00, U + 03B9
    U + 1F89ᾉLettre majuscule grecque alpha avec dasia et programmemenἁ , ιU + 1F01, U + 03B9
    U + 1F8AᾊLettre majuscule grecque alpha avec psilia et varia et programmesἂ , ιU + 1F02, U + 03B9
    U + 1F8BᾋLettre majuscule grecque alpha avec dasia et varia et progἃ , ιU + 1F03, U + 03B9
    U + 1F8CᾌLettre majuscule grecque alpha avec psily et oxy et progἄ , ιU + 1F04, U + 03B9
    U + 1F8DᾍLettre majuscule grecque alpha avec dasia et oxy et programmemenἅ , ιU + 1F05, U + 03B9
    U + 1F8EᾎLettre majuscule grecque alpha avec psily et perispomenti et programmationἆ , ιU + 1F06, U + 03B9
    U + 1F8FᾏLettre majuscule grecque alpha avec dasia et perispomenti et progsἇ , ιU + 1F07, U + 03B9
    U + 1F90ᾐLettre minuscule grecque ceci avec psily et ipogemenἠ , ιU + 1F20, U + 03B9
    U + 1F91ᾑLettre minuscule grecque a avec dasia et ipogemenἡ , ιU + 1F21, U + 03B9
    U + 1F92ᾒLettre minuscule grecque ceci avec psilia et varia et ipogemenἢ , ιU + 1F22, U + 03B9
    U + 1F93ᾓLettre minuscule grecque eta avec dasia et varia et ipogemenἣ , ιU + 1F23, U + 03B9
    U + 1F94ᾔLettre minuscule grecque A avec psilia et oksia et ipogemenἤ , ιU + 1F24, U + 03B9
    U + 1F95ᾕLettre minuscule grecque eta avec dasia et oksia et ipogemenἥ , ιU + 1F25, U + 03B9
    U + 1F96ᾖLettre minuscule grecque ceci avec psily et perispomenti et ipogemenἦ , ιU + 1F26, U + 03B9
    U + 1F97ᾗLettre minuscule grecque eta avec dasia et perisopmenti et hypogrammenἧ , ιU + 1F27, U + 03B9
    U + 1F98ᾘLettre majuscule grecque ceci avec psilah et programmesἠ , ιU + 1F20, U + 03B9
    U + 1F99ᾙLettre majuscule grecque avec Dasia et programmeursἡ , ιU + 1F21, U + 03B9
    U + 1F9AᾚLettre majuscule grecque ceci avec psilia et varia et prosgrammemenyἢ , ιU + 1F22, U + 03B9
    U + 1F9BᾛLettre majuscule grecque ceci avec dasia et varia et prosgrammemenyἣ , ιU + 1F23, U + 03B9
    U + 1F9CᾜLettre majuscule grecque ceci avec psilia et oxy et programmenἤ , ιU + 1F24, U + 03B9
    U + 1F9DᾝLettre majuscule grecque avec Dasia et Oksia et programmeursἥ , ιU + 1F25, U + 03B9
    U + 1F9EᾞLettre majuscule grecque ceci avec psily et perispomenty et prosgrammenyἦ , ιU + 1F26, U + 03B9
    U + 1F9FᾟLettre majuscule grecque ceci avec dasia et perispomenti et programmenἧ , ιU + 1F27, U + 03B9
    U + 1FA0ᾠLettre minuscule grecque oméga avec psili et ipogemenὠ , ιU + 1F60, U + 03B9
    U + 1FA1ᾡOméga lettre minuscule grecque avec dasia et ipogemenὡ , ιU + 1F61, U + 03B9
    U + 1FA2ᾢLettre minuscule grecque oméga avec psilia et varia et ipogemenὢ , ιU + 1F62, U + 03B9
    U + 1FA3ᾣLettre minuscule grecque oméga avec dasia et varia et ipogemenὣ , ιU + 1F63, U + 03B9
    U + 1FA4ᾤLettre minuscule grecque oméga avec psily et oxy et ipogemenὤ , ιU + 1F64, U + 03B9
    U + 1FA5ᾥLettre minuscule grecque oméga avec dasia et oxy et ipogemenὥ , ιU + 1F65, U + 03B9
    U + 1FA6ᾦOmega lettre minuscule grecque avec psily et perispomenti et ipogemenὦ , ιU + 1F66, U + 03B9
    U + 1FA7ᾧOmega lettre minuscule grecque avec dasia et perispomenti et hypogrammemenὧ , ιU + 1F67, U + 03B9
    U + 1FA8ᾨLettre majuscule grecque oméga avec psili et programmeὠ , ιU + 1F60, U + 03B9
    U + 1FA9ᾩLettre majuscule grecque Omega avec dasia et programmemenὡ , ιU + 1F61, U + 03B9
    U + 1FAAᾪLettre majuscule grecque oméga avec psilia et varia et prosgrammemenyὢ , ιU + 1F62, U + 03B9
    U + 1FABᾫLettre majuscule grecque Omega avec dasia et varia et programmeursὣ , ιU + 1F63, U + 03B9
    U + 1FACᾬLettre majuscule grecque oméga avec psilia et oxy et progamemenὤ , ιU + 1F64, U + 03B9
    U + 1FADᾭLettre majuscule grecque oméga avec dasia et oksia et programmeursὥ , ιU + 1F65, U + 03B9
    U + 1FAEᾮLettre majuscule grecque oméga avec psily et perispomenti et prosgrammemenyὦ , ιU + 1F66, U + 03B9
    U + 1FAFᾯLettre majuscule grecque oméga avec dasia et perispomenti et prosgrammemenyὧ , ιU + 1F67, U + 03B9
    U + 1FB2ᾲLettre minuscule grecque alpha avec varia et ipogemenὰ , ιU + 1F70, U + 03B9
    U + 1FB3ᾳLettre minuscule grecque alpha avec ogogerammeniα , ιU + 03B1, U + 03B9
    U + 1FB4ᾴLettre minuscule grecque alpha avec oxy et ipogemenά , ιU + 03AC, U + 03B9
    U + 1FB6ᾶLettre minuscule grecque alpha avec perispomentiα ,U + 03B1, U + 0342
    U + 1FB7ᾷLettre minuscule grecque alpha avec perispomenti et ipogemenα , ͂ ιU + 03B1, U + 0342, U + 03B9
    U + 1FBCᾼLettre majuscule grecque alpha avec progsα , ιU + 03B1, U + 03B9
    U + 1FC2ῂLettre minuscule grecque et avec varia et ipogemenὴ , ιU + 1F74, U + 03B9
    U + 1FC3ῃLettre minuscule grecque A avec ipogemenη , ιU + 03B7, U + 03B9
    U + 1FC4ῄLettre minuscule grecque eta avec oxy et ipogemenή , ιU + 03AE, U + 03B9
    U + 1FC6ῆLettre minuscule grecque a avec perispomentiη ,U + 03B7, U + 0342
    U + 1FC7ῇLettre minuscule grecque a avec perispomenti et ipogemenη , ͂ ιU + 03B7, U + 0342, U + 03B9
    U + 1FCCῌLettre majuscule grecque ceci avec progη , ιU + 03B7, U + 03B9
    U + 1FD2ῒIota minuscule grec avec dialyse et variaι , ̈ ,U + 03B9, U + 0308, U + 0300
    U + 1FD3ΐIota grec en minuscules avec dialyse et oxyι , ̈ ,U + 03B9, U + 0308, U + 0301
    U + 1FD6ῖGrec iota minuscule avec perispomentiι ,U + 03B9, U + 0342
    U + 1FD7ῗIota grec en minuscules avec dialyse et pointι , ̈ ,U + 03B9, U + 0308, U + 0342
    U + 1FE2ῢLettre grecque minuscule ipsilon avec dialyse et varia.υ , ̈ ,U + 03C5, U + 0308, U + 0300
    U + 1FE3ΰLettre minuscule grecque ipsilon avec dialyse et oxy.υ , ̈ ,U + 03C5, U + 0308, U + 0301
    U + 1FE4ῤRho grec en minuscules avec psiliρ , ̓U + 03C1, U + 0313
    U + 1FE6ῦLettre minuscule grecque ipsilon avec perispomentiυ ,U + 03C5, U + 0342
    U + 1FE7ῧLettre minuscule grecque ipsilon avec dialyse et pointυ , ̈ ,U + 03C5, U + 0308, U + 0342
    U + 1FF2ῲOméga lettre minuscule grecque avec varia et ipogemenὼ , ιU + 1F7C, U + 03B9
    U + 1FF3ῳLettre minuscule grecque oméga avec ogogerammeniω , ιU + 03C9, U + 03B9
    U + 1FF4ῴOméga lettre minuscule grecque avec oxia et ipogemenώ , ιU + 03CE, U + 03B9
    U + 1FF6ῶLettre minuscule grecque oméga avec perispomentiω ,U + 03C9, U + 0342
    U + 1FF7ῷOmega lettre minuscule grecque avec perispomenti et ipogemenω , ͂ ιU + 03C9, U + 0342, U + 03B9
    U + 1FFCῼLettre majuscule grecque oméga avec programmeω , ιU + 03C9, U + 03B9
    U + FB00ffLigature latine minuscule Fff fU + 0066, U + 0066
    U + FB01fiLigature minuscule latine Fif , iU + 0066, U + 0069
    U + FB02flLigature latine minuscule Flf lU + 0066, U + 006C
    U + FB03ffiLigature latine minuscule Ffif , f , iU + 0066, U + 0066, U + 0069
    U + FB04fflLigature latine minuscule Fflf , f , lU + 0066, U + 0066, U + 006C
    U + FB05ſtLigature latine minuscule longue STs , tU + 0073, U + 0074
    U + FB06stLigature minuscule latine Sts , tU + 0073, U + 0074
    U + FB13ﬓLigature arménienne minuscule Men Nowմ , նU + 0574, U + 0576
    U + FB14ﬔLigature arménienne minuscule Hommes Echմ , եU + 0574, U + 0565
    U + FB15ﬕLigature arménienne minuscule Hommes Iniմ , իU + 0574, U + 056B
    U + FB16ﬖLigature arménienne minuscule Vew Nowվ , նU + 057E, U + 0576
    U + FB17ﬗLigature 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