GitHub ΠΎΠ·ΠΎΠ²Π°Π» Π΅ ΠΏΠΎΠ΄Π°ΡΠ»ΠΈΠ² Π½Π° Π°ΡΠ°ΠΊΠ°, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΡΠΊΡΠ²Π°ΡΠ΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π°ΠΊΠ°ΡΠ½Ρ ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π² ΠΈΠΌΠ΅ΠΉΠ». ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π½Π° Unicode, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ°Π»ΠΊΠΈ ΠΈΠ»ΠΈ Π³Π»Π°Π²Π½ΠΈ Π±ΡΠΊΠ²ΠΈ, ΡΠ΅ ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π°Ρ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Π·Π½Π°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΠΎ ΡΡΠΈΠ» (ΠΊΠΎΠ³Π°ΡΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π½Π°ΠΊΠ° ΡΠ΅ ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π°Ρ Π² Π΅Π΄ΠΈΠ½ Π·Π½Π°ΠΊ - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡΡΠΊΠΈΡΡ Π·Π½Π°ΠΊ "Δ±" ΠΈ "i" ", ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ Π² Π³Π»Π°Π²Π½ΠΈ Π±ΡΠΊΠ²ΠΈ, ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ Π² "I").
ΠΡΠ΅Π΄ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ Π² Π½ΡΠΊΠΎΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π΄Π°Π½Π½ΠΈ ΠΏΡΡΠ²ΠΎ ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Ρ Π² Π³Π»Π°Π²Π½ΠΈ ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠΊΠΎ Π΄Π°Π΄Π΅Π½Π° ΡΡΠ»ΡΠ³Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ½ΠΈΠΊΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π² Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ
ΠΎΠ΄ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΠΉΠ», ΡΠΎΠ³Π°Π²Π° Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠ½ΠΈΠΊΠΎΠ΄ Π·Π½Π°ΡΠΈ, Π·Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈ Π°ΡΠ°ΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ° ΡΠ±Π»ΡΡΡΡΠΈ Π² Unicode Case Mapping Collisions.
'Γ'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@GΔ±thub.com'.toUpperCase() == '[ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½]'.toUpperCase()
ΠΠ°ΠΏΠ°Π΄Π°ΡΠ΅Π» Π½Π° GitHub ΠΌΠΎΠ³ΡΠ» ΡΡΠ΅Π· ΡΠΎΡΠΌΡΠ»ΡΡΠ° Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°Π±ΡΠ°Π²Π΅Π½Π° ΠΏΠ°ΡΠΎΠ»Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°ΠΉΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄ΡΡΠ³ ΠΈΠΌΠ΅ΠΉΠ», ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π²ΡΠ² ΡΠΎΡΠΌΡΠ»ΡΡΠ° Π°Π΄ΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ½ΠΈΠΊΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° ΡΠ±Π»ΡΡΡΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΎ [ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½] Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ ΠΈΠΌΠ΅ΠΉΠ» mΔ±[ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½]). ΠΠ΄ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π° ΡΠ΅ΡΡΠ°, Π·Π°ΡΠΎΡΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ Π² Π³Π»Π°Π²Π½ΠΈ Π±ΡΠΊΠ²ΠΈ ΠΈ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ Π°Π΄ΡΠ΅Ρ ([ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½] ), Π½ΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠΈΡΠΌΠΎΡΠΎ ΡΠΎ Π±Π΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΈ ΠΊΠΎΠ΄ΡΡ Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π±Π΅ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ Π½Π° ΡΠ°Π»ΡΠΈΠ² Π°Π΄ΡΠ΅Ρ (mΔ±[ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½]).
ΠΡΠΊΠΎΠΈ ΠΎΡ Π·Π½Π°ΡΠΈ, ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°ΠΉΠΊΠΈ ΡΠ±Π»ΡΡΡΡΠΈ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ°:
Γ 0x00DF SS
Δ± 0x0131 I
ΕΏ 0x017F S
ff 0xFB00 FF
fi 0xFB01 FI
fl 0xFB02 FL
ο 0xFB03 FFI
0xFB04 FFL
ο
0xFB05 ST
ο 0xFB06 ST
K 0x212A k
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru