GitHub ΠΏΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Π° Π½Π° Π°ΡΠ°ΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΡΠΎΡΠΈΠ»Π° ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡ Ρ Unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π² ΠΈΠΌΠ΅ΠΉΠ»Π°. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΡΠΎΠ²Π°, ΡΠ΅ Π½ΡΠΊΠΎΠΈ Unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΌΠ°Π»ΠΊΠΈ ΠΈΠ»ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΡΠΊΠ²ΠΈ, ΡΠ΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°Ρ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±Π»ΠΈΠ·ΠΊΠΈ ΠΏΠΎ ΡΠΎΡΠΌΠ° (ΠΊΠΎΠ³Π°ΡΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΡΠ΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°Ρ Π² Π΅Π΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ» β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΡΠΊΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ» Β«Δ±Β» ΠΈ Β«iΒ» ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π² Π³ΠΎΠ»ΡΠΌΠ° Π±ΡΠΊΠ²Π° ΡΡΠ°Π²Π°Ρ Β«IΒ»).
ΠΡΠ΅Π΄ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² Π½ΡΠΊΠΎΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΏΠΎΠ΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠΊΠΎ ΡΡΠ»ΡΠ³Π°ΡΠ° Π΄ΠΎΠΏΡΡΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π² Π»ΠΎΠ³ΠΈΠ½Π° ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΠΉΠ»Π°, Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π°ΡΠ°ΠΊΠ°, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ° ΠΊΠΎΠ»ΠΈΠ·ΠΈΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ (Unicode Case Mapping Collisions).
βΓβ.toUpperCase() == βssβ.toUpperCase() // 0x0131
ββͺβ.toLowerCase() == βKβ.toLowerCase() // 0x212A
βJohn@GΔ±thub.comβ.toUpperCase() == βJohn@Github.comβ.toUpperCase()
Π GitHub Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ Π΄Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄ΡΡΠ³ ΠΈΠΌΠ΅ΠΉΠ» ΡΡΠ΅Π· ΡΠΎΡΠΌΠ°ΡΠ° Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°Π±ΡΠ°Π²Π΅Π½Π° ΠΏΠ°ΡΠΎΠ»Π°, ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠΎΡΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ° Π°Π΄ΡΠ΅Ρ, Π²ΠΊΠ»ΡΡΠ²Π°Ρ unicode ΡΠΈΠΌΠ²ΠΎΠ», ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ ΠΊΠΎΠ»ΠΈΠ·ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ mike@example.org, ΠΈΠΌΠ΅ΠΉΠ»ΡΡ ΡΠ΅ ΡΠΊΠ°Π·Π²Π°ΡΠ΅ ΠΌΔ±ke@example.org). ΠΠ΄ΡΠ΅ΡΡΡ ΠΌΠΈΠ½Π°Π²Π°ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°ΡΠ΅ Π² Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΡΠΊΠ²ΠΈ ΠΈ ΡΡΠ²ΠΏΠ°Π΄Π°ΡΠ΅ Ρ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ Π°Π΄ΡΠ΅Ρ (mike@example.org), Π½ΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΈΠΌΠ΅ΠΉΠ»Π° ΡΠ΅ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡΠ΅ ΠΈ ΠΊΠΎΠ΄Π° Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΎΡΠΈΠ²Π°ΡΠ΅ Π½Π° ΡΠ°Π»ΡΠΈΠ²ΠΈΡ Π°Π΄ΡΠ΅Ρ (mΔ±ke@example.org).
ΠΡΠΊΠΎΠΈ ΠΎΡ , ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΡΠΈ ΠΊΠΎΠ»ΠΈΠ·ΠΈΠΈ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ°:
Γ 0x00DF SS
Δ± 0x0131 I
ΕΏ 0x017F S
ο¬ 0xFB00 FF
ο¬ 0xFB01 FI
ο¬ 0xFB02 FL
ο¬ 0xFB03 FFI
ο¬ 0xFB04 FFL
ο¬
0xFB05 ST
ο¬ 0xFB06 ST
βͺ 0x212A k
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
