Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8

Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8

Ако стС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ стС ΠΈΠ·ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΏΡ€Π΅Π΄ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅, Ρ‚ΠΎΠ³Π°Π²Π° Unicode ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Ρ‰Π΅ бъдС ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΡΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° прСдставянС зависи ΠΎΡ‚ контСкста, Π½ΠΎ Π½Π°ΠΉ-чСсто ΠΈ Ρ‚ΡƒΠΊ ΠΈΠΌΠ° унивСрсалСн ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ - UTF-8. Π₯ΡƒΠ±Π°Π²ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈ Π½Π΅Π³ΠΎ Π΅, Ρ‡Π΅ Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ всички Unicode Π·Π½Π°Ρ†ΠΈ, Π±Π΅Π· Π΄Π° Ρ…Π°Ρ€Ρ‡ΠΈΡ‚Π΅ Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи. Вярно Π΅, Ρ‡Π΅ Π·Π° Π΅Π·ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ латинската Π°Π·Π±ΡƒΠΊΠ°, β€žΠ½Π΅ Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎβ€œ Π΅ ΠΏΠΎΠ½Π΅ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° Π½Π° Π·Π½Π°ΠΊ. МоТСм Π»ΠΈ Π΄Π° сС справим ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅, Π±Π΅Π· Π΄Π° сС Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ към праисторичСскитС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚ Π΄ΠΎ само 256 Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π·Π½Π°ΠΊΠ°?

По-Π΄ΠΎΠ»Ρƒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΌ Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ с моя ΠΎΠΏΠΈΡ‚ Π΄Π° отговоря Π½Π° Ρ‚ΠΎΠ·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡ ΠΈ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ° сравнитСлно прост Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ Π»ΠΈΠ½ΠΈΠΈ Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π΅Π·ΠΈΡ†ΠΈ ΠΏΠΎ свСта, Π±Π΅Π· Π΄Π° добавятС излишъка, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π² UTF-8.

ΠžΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΆΠ΅Π½ΠΈΠ΅. Π’Π΅Π΄Π½Π°Π³Π° Ρ‰Π΅ направя няколко Π²Π°ΠΆΠ½ΠΈ ΡƒΠ³ΠΎΠ²ΠΎΡ€ΠΊΠΈ: описаното Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΊΠ°Ρ‚ΠΎ унивСрсалСн замСститСл Π½Π° UTF-8, Ρ‚ΠΎΠΉ Π΅ подходящ само Π² тСсСн списък ΠΎΡ‚ случаи (ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° тях ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ) ΠΈ Π² никакъв случай Π½Π΅ трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° взаимодСйствиС с API Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни (ΠΊΠΎΠΈΡ‚ΠΎ Π΄ΠΎΡ€ΠΈ Π½Π΅ знаят Π·Π° Π½Π΅Π³ΠΎ). Най-чСсто Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΡ‚Π΅ Π·Π° компрСсиранС с ΠΎΠ±Ρ‰ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ deflate) са подходящи Π·Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ тСкстови Π΄Π°Π½Π½ΠΈ. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΎΡ‰Π΅ Π² процСса Π½Π° създаванС Π½Π° ΠΌΠΎΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΌΠ΅Ρ€ΠΈΡ… ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ стандарт Π² самия Unicode, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π° ΡΡŠΡ‰ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ - Ρ‚ΠΎΠΉ Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-слоТСн (ΠΈ чСсто ΠΏΠΎ-лош), Π½ΠΎ всС ΠΏΠ°ΠΊ Π΅ ΠΏΡ€ΠΈΠ΅Ρ‚ стандарт, Π° Π½Π΅ просто поставСн Π·Π°Π΅Π΄Π½ΠΎ Π½Π° коляното. Π©Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΈ Π·Π° Π½Π΅Π³ΠΎ.

ΠžΡ‚Π½ΠΎΡΠ½ΠΎ Unicode ΠΈ UTF-8

ΠšΠ°Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ, няколко Π΄ΡƒΠΌΠΈ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ прСдставлява Unicode ΠΈ UTF-8.

ΠšΠ°ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚Π΅, 8-Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ бяха популярни. ΠŸΡ€ΠΈ тях всичко бСшС просто: 256 Π·Π½Π°ΠΊΠ° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ΠΈΡ€Π°Π½ΠΈ с числа ΠΎΡ‚ 0 Π΄ΠΎ 255, Π° числата ΠΎΡ‚ 0 Π΄ΠΎ 255 ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ прСдставСни ΠΊΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚. Ако сС Π²ΡŠΡ€Π½Π΅ΠΌ Π² самото Π½Π°Ρ‡Π°Π»ΠΎ, ASCII ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π΅ напълно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π΄ΠΎ 7 Π±ΠΈΡ‚Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½Π°ΠΉ-значимият Π±ΠΈΡ‚ Π² Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎ прСдставянС Π΅ Π½ΡƒΠ»Π° ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ 8-Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ са ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ с Π½Π΅Π³ΠΎ (Ρ‚Π΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚ само Π² β€žΠ³ΠΎΡ€Π½ΠΈΡβ€œ част, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½Π°ΠΉ-значимият Π±ΠΈΡ‚ Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°).

Как Unicode сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Π·Π°Ρ‰ΠΎ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ спСцифични прСдставяния са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π½Π΅Π³ΠΎ - UTF-8, UTF-16 (BE ΠΈ LE), UTF-32? НСка Π³ΠΎ ΠΏΠΎΠ΄Ρ€Π΅Π΄ΠΈΠΌ ΠΏΠΎ Ρ€Π΅Π΄.

ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ стандарт Unicode описва само ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π½Π°Ρ†ΠΈ (ΠΈ Π² някои случаи ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Π·Π½Π°Ρ†ΠΈ) ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€Π°. И ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ възмоТни числа Π² Ρ‚ΠΎΠ·ΠΈ стандарт - ΠΎΡ‚ 0x00 Π΄ΠΎ 0x10FFFF (1 114 112 броя). Ако искамС Π΄Π° поставим число Π² Ρ‚Π°ΠΊΡŠΠ² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, Π½ΠΈΡ‚ΠΎ 1, Π½ΠΈΡ‚ΠΎ 2 Π±Π°ΠΉΡ‚Π° няма Π΄Π° са Π½ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ. И Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ процСсори Π½Π΅ са ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚Ρ€ΠΈΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΈ числа, Ρ‰Π΅ бъдСм ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π΅Π½ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄ΠΎ 4 Π±Π°ΠΉΡ‚Π° Π½Π° символ! Π’ΠΎΠ²Π° Π΅ UTF-32, Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ‚Π°Π·ΠΈ "разточитСлност" Ρ‚ΠΎΠ·ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π΅ Π΅ популярСн.

Π—Π° щастиС Ρ€Π΅Π΄ΡŠΡ‚ Π½Π° Π·Π½Π°Ρ†ΠΈΡ‚Π΅ Π² Unicode Π½Π΅ Π΅ случаСн. ЦСлият ΠΈΠΌ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° 17 "самолСти", всяка ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° 65536 (0x10000) "ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ" ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡΡ‚Π° Π·Π° β€žΠΊΠΎΠ΄ΠΎΠ²Π° Ρ‚ΠΎΡ‡ΠΊΠ°β€œ Ρ‚ΡƒΠΊ Π΅ проста Π½ΠΎΠΌΠ΅Ρ€ Π½Π° символа, присвоСни ΠΌΡƒ ΠΎΡ‚ Unicode. Но, ΠΊΠ°ΠΊΡ‚ΠΎ Π±Π΅ спомСнато ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π² Unicode Π½Π΅ само ΠΎΡ‚Π΄Π΅Π»Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ†ΠΈ са Π½ΠΎΠΌΠ΅Ρ€ΠΈΡ€Π°Π½ΠΈ, Π½ΠΎ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΈ слуТСбни Π·Π½Π°Ρ†ΠΈ (Π° понякога ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½ΠΈΡ‰ΠΎ Π½Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° Π½ΠΎΠΌΠ΅Ρ€Π° - ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π·Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Π½ΠΎ Π·Π° нас Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ½ΠΎ), Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎ-ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π·Π° броя Π½Π° самитС числа, Π° Π½Π΅ Π·Π° символи. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ, Π·Π° краткост, чСсто Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π΄ΡƒΠΌΠ°Ρ‚Π° β€žΡΠΈΠΌΠ²ΠΎΠ»β€œ, Π·Π°Π³Π°Ρ‚Π²Π°ΠΉΠΊΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° β€žΠΊΠΎΠ΄ΠΎΠ²Π° Ρ‚ΠΎΡ‡ΠΊΠ°β€œ.

Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8
Unicode самолСти. ΠšΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠΎ-голямата част (самолСти ΠΎΡ‚ 4 Π΄ΠΎ 13) всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°.

Най-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ цялата основна β€žΠΏΡƒΠ»ΠΏΠ°β€œ Π»Π΅ΠΆΠΈ Π² Π½ΡƒΠ»Π΅Π²Π°Ρ‚Π° Ρ€Π°Π²Π½ΠΈΠ½Π°, тя сС Π½Π°Ρ€ΠΈΡ‡Π° "ОсновСн ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π΅Π½ ΠΏΠ»Π°Π½". Ако Ρ€Π΅Π΄ΡŠΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° тСкст Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ Π΅Π·ΠΈΡ†ΠΈ (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ китайски), няма Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅Ρ‚Π΅ ΠΎΡ‚Π²ΡŠΠ΄ Ρ‚Π°Π·ΠΈ Ρ€Π°Π²Π½ΠΈΠ½Π°. Но Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ‚Ρ€Π΅ΠΆΠ΅Ρ‚Π΅ ΠΈ останалата част ΠΎΡ‚ Unicode - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ΠΌΠΎΡ‚ΠΈΠΊΠΎΠ½ΠΈ сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π³Π»Π°Π²Π½ΠΎ Π² края Π½Π° слСдващият самолСт,"Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π΅Π½ самолСт"(простира сС ΠΎΡ‚ 0x10000 Π΄ΠΎ 0x1FFFF). Π’Π°ΠΊΠ° Ρ‡Π΅ UTF-16 ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ²Π°: всички символи, ΠΏΠΎΠΏΠ°Π΄Π°Ρ‰ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ ОсновСн ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π΅Π½ ΠΏΠ»Π°Π½, са ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ β€žΠΊΠ°ΠΊΡ‚ΠΎ Π΅β€œ със ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ Π΄Π²ΡƒΠ±Π°ΠΉΡ‚ΠΎΠ² Π½ΠΎΠΌΠ΅Ρ€. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, някои ΠΎΡ‚ числата Π² Ρ‚ΠΎΠ·ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π·Π½Π°Ρ†ΠΈ, Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚, Ρ‡Π΅ слСд Ρ‚Π°Π·ΠΈ Π΄Π²ΠΎΠΉΠΊΠ° Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ трябва Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΡ‰Π΅ Π΅Π΄Π½Π° - Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° стойноститС Π½Π° Ρ‚Π΅Π·ΠΈ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ Π±Π°ΠΉΡ‚Π° Π·Π°Π΅Π΄Π½ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ число, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠΊΡ€ΠΈΠ²Π° цСлия Π²Π°Π»ΠΈΠ΄Π΅Π½ Unicode Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. Π’Π°Π·ΠΈ идСя сС Π½Π°Ρ€ΠΈΡ‡Π° β€žΡΡƒΡ€ΠΎΠ³Π°Ρ‚Π½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈβ€œ – ΠΌΠΎΠΆΠ΅ Π±ΠΈ стС Ρ‡ΡƒΠ²Π°Π»ΠΈ Π·Π° тях.

Π’Π°ΠΊΠ° Ρ‡Π΅ UTF-16 изисква Π΄Π²Π° ΠΈΠ»ΠΈ (Π² ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π΄ΠΊΠΈ случаи) Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ Π±Π°ΠΉΡ‚Π° Π½Π° "ΠΊΠΎΠ΄ΠΎΠ²Π° Ρ‚ΠΎΡ‡ΠΊΠ°". Π’ΠΎΠ²Π° Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ Π±Π°ΠΉΡ‚Π° ΠΏΡ€Π΅Π· цялото Π²Ρ€Π΅ΠΌΠ΅, Π½ΠΎ латинскитС (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ASCII Π·Π½Π°Ρ†ΠΈ), ΠΊΠΎΠ³Π°Ρ‚ΠΎ са ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, губят ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° място Π²ΡŠΡ€Ρ…Ρƒ Π½ΡƒΠ»ΠΈ. UTF-8 Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π° Ρ‚ΠΎΠ²Π°: ASCII Π² Π½Π΅Π³ΠΎ Π·Π°Π΅ΠΌΠ°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΡ€Π΅Π΄ΠΈ, само Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚; ΠΊΠΎΠ΄ΠΎΠ²Π΅ ΠΎΡ‚ 0x80 Π΄ΠΎ 0x7FF - Π΄Π²Π° Π±Π°ΠΉΡ‚Π°; ΠΎΡ‚ 0x800 Π΄ΠΎ 0xFFFF - Ρ‚Ρ€ΠΈ, ΠΈ ΠΎΡ‚ 0x10000 Π΄ΠΎ 0x10FFFF - Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ. ΠžΡ‚ Π΅Π΄Π½Π° страна, латинската Π°Π·Π±ΡƒΠΊΠ° стана Π΄ΠΎΠ±Ρ€Π°: ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° с ASCII сС Π²ΡŠΡ€Π½Π° ΠΈ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎ-Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ β€žΡ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎβ€œ ΠΎΡ‚ 1 Π΄ΠΎ 4 Π±Π°ΠΉΡ‚Π°. Но Π°Π·Π±ΡƒΠΊΠΈΡ‚Π΅, Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΡ‚ Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π°, ΡƒΠ²ΠΈ, Π½Π΅ сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΠΎ никакъв Π½Π°Ρ‡ΠΈΠ½ Π² сравнСниС с UTF-16 ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ тях Π²Π΅Ρ‡Π΅ изискват Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π° вмСсто Π΄Π²Π° - Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΡŠΡ‚, ΠΏΠΎΠΊΡ€ΠΈΡ‚ ΠΎΡ‚ Π΄Π²ΡƒΠ±Π°ΠΉΡ‚ΠΎΠ² запис, Π΅ стСснСн с 32 ΠΏΡŠΡ‚ΠΈ, с 0xFFFF Π΄ΠΎ 0x7FF, ΠΊΠ°Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ Π½Π΅ са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π½ΠΈΡ‚ΠΎ китайски, Π½ΠΈΡ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ грузински. ΠšΠΈΡ€ΠΈΠ»ΠΈΡ†Π° ΠΈ ΠΏΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈ Π°Π·Π±ΡƒΠΊΠΈ - ΡƒΡ€Π° - ΠΊΡŠΡΠΌΠ΅Ρ‚, 2 Π±Π°ΠΉΡ‚Π° Π½Π° Π·Π½Π°ΠΊ.

Π·Π°Ρ‰ΠΎ сС случва Ρ‚ΠΎΠ²Π° НСка Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ UTF-8 прСдставя ΠΊΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π·Π½Π°Ρ†ΠΈΡ‚Π΅:
Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8
Π’ΡƒΠΊ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π° прСдставянС Π½Π° числа, Π±ΠΈΡ‚ΠΎΠ²Π΅, ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ със символа x. Π’ΠΈΠΆΠ΄Π° сС, Ρ‡Π΅ Π² Π΄Π²ΡƒΠ±Π°ΠΉΡ‚ΠΎΠ² запис ΠΈΠΌΠ° само 11 Ρ‚Π°ΠΊΠΈΠ²Π° Π±ΠΈΡ‚Π° (ΠΎΡ‚ 16). Π’ΠΎΠ΄Π΅Ρ‰ΠΈΡ‚Π΅ Π±ΠΈΡ‚ΠΎΠ²Π΅ Ρ‚ΡƒΠΊ ΠΈΠΌΠ°Ρ‚ само спомагатСлна функция. Π’ случай Π½Π° Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΠ±Π°ΠΉΡ‚ΠΎΠ² запис, 21 ΠΎΡ‚ 32 Π±ΠΈΡ‚Π° сС разпрСдСлят Π·Π° Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° - ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Ρ‡Π΅ Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π° (ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π°Π²Π°Ρ‚ ΠΎΠ±Ρ‰ΠΎ 24 Π±ΠΈΡ‚Π°) Π±ΠΈΡ…Π° Π±ΠΈΠ»ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ, Π½ΠΎ сСрвизнитС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΈ изяТдат Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ.

Ρ‚ΠΎΠ²Π° лошо Π»ΠΈ Π΅ НС Ρ‚ΠΎΡ‡Π½ΠΎ. ΠžΡ‚ Π΅Π΄Π½Π° страна, Π°ΠΊΠΎ Π΄ΡŠΡ€ΠΆΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° пространството, ΠΈΠΌΠ°ΠΌΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° компрСсиранС, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ лСсно Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ цялата Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° Снтропия ΠΈ излишък. ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, Ρ†Π΅Π»Ρ‚Π° Π½Π° Unicode бСшС Π΄Π° осигури възмоТно Π½Π°ΠΉ-унивСрсалното ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅. НапримСр, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ€Π΅Π΄, ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ Π² UTF-8, Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈΠ» само с ASCII, ΠΈ Π΄Π° Π½Π΅ сС страхувамС, Ρ‡Π΅ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈ символ ΠΎΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ASCII, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½Π΅ Π΅ Ρ‚Π°ΠΌ (Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Π² UTF-8 всички Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‰ΠΈ ΠΎΡ‚ нулСвия Π±ΠΈΡ‚ - Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π° Π΅ ASCII). И Π°ΠΊΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ искамС Π΄Π° ΠΎΡ‚Ρ€Π΅ΠΆΠ΅ΠΌ ΠΌΠ°Π»ΠΊΠ° опашка ΠΎΡ‚ голям Π½ΠΈΠ·, Π±Π΅Π· Π΄Π° Π³ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΠΌΠ΅ ΠΎΡ‚ самото Π½Π°Ρ‡Π°Π»ΠΎ (ΠΈΠ»ΠΈ Π΄Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌ част ΠΎΡ‚ информацията слСд ΠΏΠΎΠ²Ρ€Π΅Π΄Π΅Π½Π° сСкция), Π·Π° нас Π΅ лСсно Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ отмСстванСто, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π° Π·Π½Π°ΠΊ (Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅ Π·Π° Π΄Π° пропуснСтС Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ Π±ΠΈΡ‚ΠΎΠ² прСфикс 10).

Π—Π°Ρ‰ΠΎ Ρ‚ΠΎΠ³Π°Π²Π° Π΄Π° измислят Π½Π΅Ρ‰ΠΎ Π½ΠΎΠ²ΠΎ?

Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ понякога ΠΈΠΌΠ° ситуации, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° компрСсиранС ΠΊΠ°Ρ‚ΠΎ deflate са слабо ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ, Π½ΠΎ искатС Π΄Π° постигнСтС ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅. Π›ΠΈΡ‡Π½ΠΎ Π°Π· сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ… с Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ мислСх Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ компрСсирано прСфиксно Π΄ΡŠΡ€Π²ΠΎ Π·Π° голям Ρ€Π΅Ρ‡Π½ΠΈΠΊ, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ Π΄ΡƒΠΌΠΈ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ. ΠžΡ‚ Π΅Π΄Π½Π° страна, всяка Π΄ΡƒΠΌΠ° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠ°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ компрСсиранСто ΠΉ Ρ‰Π΅ бъдС Π½Π΅Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ. ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, рСализацията Π½Π° Π΄ΡŠΡ€Π²ΠΎΡ‚ΠΎ, която Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ…, бСшС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π° Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ всСки Π±Π°ΠΉΡ‚ ΠΎΡ‚ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΡ Π½ΠΈΠ· Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Π²Ρ€ΡŠΡ… Π½Π° Π΄ΡŠΡ€Π²ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° тСхния Π±Ρ€ΠΎΠΉ бСшС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Π’ моята Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Az.js (ΠšΠ°ΠΊΡ‚ΠΎ Π² пиморфия2, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ сС основава) ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π΅ΡˆΠ΅Π½ просто - Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°Π½ΠΈ Π² Dawg-Ρ€Π΅Ρ‡Π½ΠΈΠΊ, ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½ Ρ‚Π°ΠΌ Π² добрият стар CP1251. Но, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ лСсно Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅, Ρ‚ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΎΠ±Ρ€Π΅ само Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π°Π·Π±ΡƒΠΊΠ° - Ρ€Π΅Π΄ Π½Π° китайски Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π΄ΠΎΠ±Π°Π²Π΅Π½ към Ρ‚Π°ΠΊΡŠΠ² Ρ€Π΅Ρ‡Π½ΠΈΠΊ.

ΠžΡ‚Π΄Π΅Π»Π½ΠΎ Π±ΠΈΡ… искал Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠ° ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ нСприятСн нюанс, ΠΊΠΎΠΉΡ‚ΠΎ възниква ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° UTF-8 Π² Ρ‚Π°ΠΊΠ°Π²Π° структура Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½Π°Ρ‚Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π½Π°ΠΊΡŠΡ‚ Π΅ записан ΠΊΠ°Ρ‚ΠΎ Π΄Π²Π° Π±Π°ΠΉΡ‚Π°, Π±ΠΈΡ‚ΠΎΠ²Π΅Ρ‚Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с нСговия Π½ΠΎΠΌΠ΅Ρ€, Π½Π΅ ΠΈΠ΄Π²Π°Ρ‚ Π² Ρ€Π΅Π΄, Π° са Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΡ‚ Π΄Π²ΠΎΠΉΠΊΠ° Π±ΠΈΡ‚ΠΎΠ²Π΅ 10 ΠΏΠΎ срСдата: 110xxxxx 10xxxxxx. ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄ΠΎΠ»Π½ΠΈΡ‚Π΅ 6 Π±ΠΈΡ‚Π° Π½Π° втория Π±Π°ΠΉΡ‚ ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Ρ‚ Π² ΠΊΠΎΠ΄Π° Π½Π° символа (Ρ‚.Π΅. възниква ΠΏΡ€Π΅Ρ…ΠΎΠ΄ 10111111 β†’ 10000000), Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Π±Π°ΠΉΡ‚ ΡΡŠΡ‰ΠΎ сС промСня. Оказва сС, Ρ‡Π΅ Π±ΡƒΠΊΠ²Π°Ρ‚Π° "p" сС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° с Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ 0xD0 0xBF, Π° слСдващото β€žrβ€œ Π΅ Π²Π΅Ρ‡Π΅ 0xD1 0x80. Π’ прСфиксно Π΄ΡŠΡ€Π²ΠΎ Ρ‚ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ раздСлянСто Π½Π° родитСлския възСл Π½Π° Π΄Π²Π° - Π΅Π΄ΠΈΠ½ Π·Π° прСфикса 0xD0, ΠΈ Π΄Ρ€ΡƒΠ³ Π·Π° 0xD1 (Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ цялата ΠΊΠΈΡ€ΠΈΠ»ΠΈΡ†Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π° само ΠΎΡ‚ втория Π±Π°ΠΉΡ‚).

Какво ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…

Π˜Π·ΠΏΡ€Π°Π²Π΅Π½ ΠΏΡ€Π΅Π΄ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ€Π΅ΡˆΠΈΡ… Π΄Π° сС упраТнявам Π΄Π° играя ΠΈΠ³Ρ€ΠΈ с Π±ΠΈΡ‚ΠΎΠ²Π΅ ΠΈ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° сС запозная ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ със структурата Π½Π° Unicode ΠΊΠ°Ρ‚ΠΎ цяло. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ бСшС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ UTF-C ("C" Π·Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½), ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π° Π½Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 3 Π±Π°ΠΉΡ‚Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ чСсто Π²ΠΈ позволява Π΄Π° Ρ…Π°Ρ€Ρ‡ΠΈΡ‚Π΅ само Π΅Π΄ΠΈΠ½ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Π±Π°ΠΉΡ‚ Π·Π° цСлия ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ Ρ€Π΅Π΄. Π’ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅-ASCII Π°Π·Π±ΡƒΠΊΠΈ Ρ‚Π°ΠΊΠΎΠ²Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ сС ΠΎΠΊΠ°Π·Π²Π° 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ ΠΎΡ‚ UTF-8.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° внСдряванС Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° JavaScript ΠΈ Go Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ свободно Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ във вашия ΠΊΠΎΠ΄. Но всС ΠΏΠ°ΠΊ Ρ‰Π΅ подчСртая, Ρ‡Π΅ Π² извСстСн смисъл Ρ‚ΠΎΠ·ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ си остава β€žΠ²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄β€œ ΠΈ Π½Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π±Π΅Π· Π΄Π° ΠΎΡΡŠΠ·Π½Π°Π²Π°Ρ‚Π΅ Π·Π°Ρ‰ΠΎ Π²ΠΈ трябва. Π’ΠΎΠ²Π° всС ΠΎΡ‰Π΅ Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ СкспСримСнт, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ сСриозно β€žΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ Π½Π° UTF-8β€œ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ΄ΡŠΡ‚ Ρ‚Π°ΠΌ Π΅ написан спрСтнато, стСгнато, с голям Π±Ρ€ΠΎΠΉ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ ΠΈ тСстово ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅.

Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8
Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΎΡ‚ тСста ΠΈ сравнСниС с UTF-8

Аз ΡΡŠΡ‰ΠΎ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ… Π΄Π΅ΠΌΠΎ страница, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ СфСктивността Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ°, Π° слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ ΠΈ процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

Π•Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° излишни Π±ΠΈΡ‚ΠΎΠ²Π΅

Π’Π·Π΅Ρ… UTF-8 ΠΊΠ°Ρ‚ΠΎ основа, Ρ€Π°Π·Π±ΠΈΡ€Π° сС. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ ΠΈ Π½Π°ΠΉ-ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π½Π΅Π³ΠΎ, Π΅ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ броят Π½Π° слуТСбнитС Π±ΠΈΡ‚ΠΎΠ²Π΅ във всСки Π±Π°ΠΉΡ‚. НапримСр, ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Π±Π°ΠΉΡ‚ Π² UTF-8 Π²ΠΈΠ½Π°Π³ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π° с ΠΈΠ»ΠΈ 0, ΠΈΠ»ΠΈ с 11 - прСфикс 10 Π‘Π°ΠΌΠΎ слСднитС Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Π³ΠΎ ΠΈΠΌΠ°Ρ‚. НСка Π·Π°ΠΌΠ΅Π½ΠΈΠΌ прСфикса 11 Π½Π° 1, Π° Π·Π° слСдващитС Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ напълно прСфикситС. Какво Ρ‰Π΅ сС случи?

0xxxxxxx β€” 1 Π±Π°ΠΉΡ‚
10xxxxxx xxxxxxxx - 2 Π±Π°ΠΉΡ‚Π°
110xxxxx xxxxxxxx xxxxxxxx - 3 Π±Π°ΠΉΡ‚Π°

Π§Π°ΠΊΠ°ΠΉ, къдС Π΅ чСтирибайтовият запис? Но Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ - ΠΏΡ€ΠΈ запис Π² Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π° Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°Π»ΠΈΡ‡Π½ΠΈ 21 Π±ΠΈΡ‚Π° ΠΈ Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π·Π° всички числа Π΄ΠΎ 0x10FFFF.

Какво смС ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²Π°Π»ΠΈ Ρ‚ΡƒΠΊ? Най-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†ΠΈ Π½Π° Π·Π½Π°Ρ†ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ място Π² Π±ΡƒΡ„Π΅Ρ€Π°. НС ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° посочим ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π±Π°ΠΉΡ‚ ΠΈ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° слСдващия Π·Π½Π°ΠΊ ΠΎΡ‚ Π½Π΅Π³ΠΎ. Π’ΠΎΠ²Π° Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° нашия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° рядко Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. ОбикновСно ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡ€Π΅Π· Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΡ‚ самото Π½Π°Ρ‡Π°Π»ΠΎ (особСно ΠΊΠΎΠ³Π°Ρ‚ΠΎ става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° къси Π»ΠΈΠ½ΠΈΠΈ).

Битуацията с ΠΏΠΎΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Π·ΠΈΡ†ΠΈ с 2 Π±Π°ΠΉΡ‚Π° ΡΡŠΡ‰ΠΎ сС ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ: сСга двубайтовият Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π²Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ 14 Π±ΠΈΡ‚Π° ΠΈ Ρ‚ΠΎΠ²Π° са ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π΄ΠΎ 0x3FFF. ΠšΠΈΡ‚Π°ΠΉΡ†ΠΈΡ‚Π΅ нямат ΠΊΡŠΡΠΌΠ΅Ρ‚ (Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠΌ Π²Π°Ρ€ΠΈΡ€Π°Ρ‚ ΠΏΡ€Π΅Π΄ΠΈΠΌΠ½ΠΎ ΠΎΡ‚ 0x4E00 Π΄ΠΎ 0x9FFF), Π½ΠΎ Π³Ρ€ΡƒΠ·ΠΈΠ½Ρ†ΠΈΡ‚Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π°Ρ€ΠΎΠ΄ΠΈ сС забавляват ΠΏΠΎΠ²Π΅Ρ‡Π΅ - Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ Π΅Π·ΠΈΡ†ΠΈ ΡΡŠΡ‰ΠΎ сС ΠΏΠΎΠ±ΠΈΡ€Π°Ρ‚ Π² 2 Π±Π°ΠΉΡ‚Π° Π½Π° Π·Π½Π°ΠΊ.

Π’ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€Π°

НСка сСга Π΄Π° помислим Π·Π° свойствата Π½Π° самитС Π»ΠΈΠ½ΠΈΠΈ. Π Π΅Ρ‡Π½ΠΈΠΊΡŠΡ‚ Π½Π°ΠΉ-чСсто ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π΄ΡƒΠΌΠΈ, написани с Π±ΡƒΠΊΠ²ΠΈ ΠΎΡ‚ ΡΡŠΡ‰Π°Ρ‚Π° Π°Π·Π±ΡƒΠΊΠ°, Π° Ρ‚ΠΎΠ²Π° Π²Π°ΠΆΠΈ ΠΈ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ тСкстовС. Π‘ΠΈ Π±ΠΈΠ»ΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° посочитС Ρ‚Π°Π·ΠΈ Π°Π·Π±ΡƒΠΊΠ° вСднъТ ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° посочитС само Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° Π±ΡƒΠΊΠ²Π°Ρ‚Π° Π² нСя. Π”Π° Π²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»ΠΈ ΠΏΠΎΠ΄Ρ€Π΅Π΄Π±Π°Ρ‚Π° Π½Π° Π·Π½Π°Ρ†ΠΈΡ‚Π΅ Π² Unicode Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Ρ‰Π΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅.

ΠšΠ°ΠΊΡ‚ΠΎ Π±Π΅ спомСнато ΠΏΠΎ-Π³ΠΎΡ€Π΅, Unicode Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° самолСт 65536 ΠΊΠΎΠ΄Π° всСки. Но Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (ΠΊΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅, Π½Π°ΠΉ-чСсто смС Π² Π½ΡƒΠ»Π΅Π²Π°Ρ‚Π° Ρ€Π°Π²Π½ΠΈΠ½Π°). По-интСрСсно Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ Π±Π»ΠΎΠΊΠΎΠ²Π΅. Π’Π΅Π·ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π²Π΅Ρ‡Π΅ нямат фиксирана дълТина ΠΈ са ΠΏΠΎ-смислСни - ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ всСки ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° Π·Π½Π°Ρ†ΠΈ ΠΎΡ‚ Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° Π°Π·Π±ΡƒΠΊΠ°.

Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8
Π‘Π»ΠΎΠΊ, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ Π·Π½Π°Ρ†ΠΈ ΠΎΡ‚ бСнгалската Π°Π·Π±ΡƒΠΊΠ°. Π—Π° съТалСниС, ΠΏΠΎΡ€Π°Π΄ΠΈ историчСски ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ, Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ»ΡŠΡ‚Π½Π° ΠΎΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° - 96 Π·Π½Π°ΠΊΠ° са Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·ΠΏΡ€ΡŠΡΠ½Π°Ρ‚ΠΈ Π² 128 Π±Π»ΠΎΠΊΠΎΠ²ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ.

Началото Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ са ΠΊΡ€Π°Ρ‚Π½ΠΈ Π½Π° 16 - Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ просто Π·Π° удобство. Π’ допълнСниС, ΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Π½Π° стойности, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΊΡ€Π°Ρ‚Π½ΠΈ Π½Π° 128 ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ 256 - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ основната ΠΊΠΈΡ€ΠΈΠ»ΠΈΡ†Π° Π·Π°Π΅ΠΌΠ° 256 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ 0x0400 Π΄ΠΎ 0x04FF. Π’ΠΎΠ²Π° Π΅ доста ΡƒΠ΄ΠΎΠ±Π½ΠΎ: Π°ΠΊΠΎ Π·Π°ΠΏΠ°Π·ΠΈΠΌ прСфикса вСднъТ 0x04, Ρ‚ΠΎΠ³Π°Π²Π° всСки кирилски Π·Π½Π°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС записан Π² Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚. Вярно Π΅, Ρ‡Π΅ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Ρ‰Π΅ Π·Π°Π³ΡƒΠ±ΠΈΠΌ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ към ASCII (ΠΈ към всички Π΄Ρ€ΡƒΠ³ΠΈ Π·Π½Π°Ρ†ΠΈ ΠΊΠ°Ρ‚ΠΎ цяло). Π—Π°Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π°:

  1. Π”Π²Π° Π±Π°ΠΉΡ‚Π° 10yyyyyy yxxxxxxx Π½Π΅ само ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Ρ‚ символ с число yyyyyy yxxxxxxx, Π½ΠΎ ΠΈ промяна Ρ‚Π΅ΠΊΡƒΡ‰Π° Π°Π·Π±ΡƒΠΊΠ° Π½Π° yyyyyy y0000000 (Ρ‚.Π΅. ΠΏΠΎΠΌΠ½ΠΈΠΌ всички Π±ΠΈΡ‚ΠΎΠ²Π΅ с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΠΉ-ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΠΈΡ‚Π΅ 7 Π±ΠΈΡ‚Π°);
  2. Π•Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚ 0xxxxxxx Ρ‚ΠΎΠ²Π° Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŠΡ‚ Π½Π° настоящата Π°Π·Π±ΡƒΠΊΠ°. ΠŸΡ€ΠΎΡΡ‚ΠΎ трябва Π΄Π° сС Π΄ΠΎΠ±Π°Π²ΠΈ към отмСстванСто, ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ…ΠΌΠ΅ Π² ΡΡ‚ΡŠΠΏΠΊΠ° 1. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π½Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ…ΠΌΠ΅ Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π°, отмСстванСто Π΅ Π½ΡƒΠ»Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ…ΠΌΠ΅ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с ASCII.

По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅, изискващи 3 Π±Π°ΠΉΡ‚Π°:

  1. Π’Ρ€ΠΈ Π±Π°ΠΉΡ‚Π° 110yyyyy yxxxxxxx xxxxxxxx ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Ρ‚Π΅ символ с Ρ†ΠΈΡ„Ρ€Π° yyyyyy yxxxxxxx xxxxxxxx, промяна Ρ‚Π΅ΠΊΡƒΡ‰Π° Π°Π·Π±ΡƒΠΊΠ° Π½Π° yyyyyy y0000000 00000000 (ΠΏΠΎΠΌΠ½ΠΈ всичко, освСн ΠΏΠΎ-ΠΌΠ»Π°Π΄ΠΈΡ‚Π΅ 15 Π±ΠΈΡ‚Π°) ΠΈ поставСтС ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ° Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‡Π΅Ρ‚ΠΎ, Π² ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π°ΠΌΠ΅ сСга дълго Ρ€Π΅ΠΆΠΈΠΌ (ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° Π΄Π²ΡƒΠ±Π°ΠΉΡ‚ΠΎΠ²Π°, Ρ‰Π΅ Π½ΡƒΠ»ΠΈΡ€Π°ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ Ρ„Π»Π°Π³);
  2. Π”Π²Π° Π±Π°ΠΉΡ‚Π° 0xxxxxxx xxxxxxxx Π² дълъг Ρ€Π΅ΠΆΠΈΠΌ Ρ‚ΠΎΠ²Π° Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŠΡ‚ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° Π°Π·Π±ΡƒΠΊΠ°. По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ Π³ΠΎ добавямС с отмСстванСто ΠΎΡ‚ ΡΡ‚ΡŠΠΏΠΊΠ° 1. ЕдинствСната Ρ€Π°Π·Π»ΠΈΠΊΠ° Π΅, Ρ‡Π΅ сСга Ρ‡Π΅Ρ‚Π΅ΠΌ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° (Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ…ΠΌΠ΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ Ρ€Π΅ΠΆΠΈΠΌ).

Π—Π²ΡƒΡ‡ΠΈ Π΄ΠΎΠ±Ρ€Π΅: сСга, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ трябва Π΄Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΠΌΠ΅ Π·Π½Π°Ρ†ΠΈ ΠΎΡ‚ ΡΡŠΡ‰ΠΈΡ 7-Π±ΠΈΡ‚ΠΎΠ² Unicode Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°ΠΌΠ΅ 1 Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Π±Π°ΠΉΡ‚ Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ ΠΈ ΠΎΠ±Ρ‰ΠΎ Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π½Π° Π·Π½Π°ΠΊ.

Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8
Π Π°Π±ΠΎΡ‚ΠΈ ΠΎΡ‚ Π΅Π΄Π½Π° ΠΎΡ‚ ΠΏΠΎ-Ρ€Π°Π½Π½ΠΈΡ‚Π΅ вСрсии. Π’Π΅Ρ‡Π΅ чСсто Π±ΠΈΠ΅ UTF-8, Π½ΠΎ всС ΠΎΡ‰Π΅ ΠΈΠΌΠ° място Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅.

КоС Π΅ ΠΏΠΎ-Π»ΠΎΡˆΠΎΡ‚ΠΎ? ΠŸΡŠΡ€Π²ΠΎ, ΠΈΠΌΠ°ΠΌΠ΅ условиС, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ отмСстванС Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° Π°Π·Π±ΡƒΠΊΠ° ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ° дълъг Ρ€Π΅ΠΆΠΈΠΌ. Π’ΠΎΠ²Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π½ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°: сСга Π΅Π΄Π½ΠΈ ΠΈ ΡΡŠΡ‰ΠΈ Π·Π½Π°Ρ†ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ контСксти. Π’ΡŠΡ€ΡΠ΅Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ΄Π½ΠΈΠ·ΠΎΠ²Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‰Π΅ трябва Π΄Π° сС ΠΏΡ€Π°Π²ΠΈ, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ‚ΠΎΠ²Π°, Π° Π½Π΅ само Ρ‡Ρ€Π΅Π· сравняванС Π½Π° Π±Π°ΠΉΡ‚ΠΎΠ²Π΅. Π’Ρ‚ΠΎΡ€ΠΎ, Π²Π΅Π΄Π½Π°Π³Π° Ρ‰ΠΎΠΌ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ…ΠΌΠ΅ Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π°, стана лошо с ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ASCII символи (ΠΈ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ само латинската Π°Π·Π±ΡƒΠΊΠ°, Π½ΠΎ ΠΈ основната пунктуация, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ) - Ρ‚Π΅ изискват промяна Π½Π° Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π½Π° 0, Ρ‚.Π΅. ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Π±Π°ΠΉΡ‚ (ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½, Π·Π° Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ към Π½Π°ΡˆΠ°Ρ‚Π° основна Ρ‚ΠΎΡ‡ΠΊΠ°).

Π•Π΄Π½Π° Π°Π·Π±ΡƒΠΊΠ° Π΅ Π΄ΠΎΠ±Ρ€Π°, Π΄Π²Π΅ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅

НСка сС ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ ΠΌΠ°Π»ΠΊΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ Π±ΠΈΡ‚ΠΎΠ²ΠΈ прСфикси, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ към Ρ‚Ρ€ΠΈΡ‚Π΅, описани ΠΏΠΎ-Π³ΠΎΡ€Π΅:

0xxxxxxx β€” 1 Π±Π°ΠΉΡ‚ Π² Π½ΠΎΡ€ΠΌΠ°Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ, 2 Π² дълъг Ρ€Π΅ΠΆΠΈΠΌ
11xxxxxx β€” 1 Π±Π°ΠΉΡ‚
100xxxxx xxxxxxxx - 2 Π±Π°ΠΉΡ‚Π°
101xxxxx xxxxxxxx xxxxxxxx - 3 Π±Π°ΠΉΡ‚Π°

Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8

Π‘Π΅Π³Π° Π² Π΄Π²ΡƒΠ±Π°ΠΉΡ‚ΠΎΠ² запис ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ Π½Π°Π»ΠΈΡ‡Π΅Π½ Π±ΠΈΡ‚ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ - ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π΄ΠΎ 0x1FFFИ Π½Π΅ 0x3FFF. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ‚ΠΎΠΉ всС ΠΎΡ‰Π΅ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΎ ΠΏΠΎ-голям, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π² Π΄Π²ΡƒΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΈΡ‚Π΅ UTF-8 ΠΊΠΎΠ΄ΠΎΠ²Π΅, ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ чСсто срСщани Π΅Π·ΠΈΡ†ΠΈ всС ΠΎΡ‰Π΅ сС вписват, Π½Π°ΠΉ-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ°Ρ‚Π° Π·Π°Π³ΡƒΠ±Π° Π΅ ΠΎΡ‚ΠΏΠ°Π΄Π½Π°Π»Π° Ρ…ΠΈΡ€Π°Π³Π°Π½Π° ΠΈ ΠΊΠ°Ρ‚Π°ΠΊΠ°Π½Π°, японцитС са Ρ‚ΡŠΠΆΠ½ΠΈ.

Какъв Π΅ Ρ‚ΠΎΠ·ΠΈ Π½ΠΎΠ² ΠΊΠΎΠ΄? 11xxxxxx? Π’ΠΎΠ²Π° Π΅ ΠΌΠ°Π»ΠΊΠΎ β€žΡΠΊΡ€ΠΈΠ²Π°Π»ΠΈΡ‰Π΅β€œ с Ρ€Π°Π·ΠΌΠ΅Ρ€ 64 Π·Π½Π°ΠΊΠ°, допълва основната Π½ΠΈ Π°Π·Π±ΡƒΠΊΠ°, Π·Π°Ρ‚ΠΎΠ²Π° Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΡ… спомагатСлна (спомагатСлСн) Π°Π·Π±ΡƒΠΊΠ°. ΠšΠΎΠ³Π°Ρ‚ΠΎ смСним Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° Π°Π·Π±ΡƒΠΊΠ°, част ΠΎΡ‚ старата Π°Π·Π±ΡƒΠΊΠ° става ΠΏΠΎΠΌΠΎΡ‰Π½Π°. НапримСр, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ…ΠΌΠ΅ ΠΎΡ‚ ASCII към ΠΊΠΈΡ€ΠΈΠ»ΠΈΡ†Π° - скривалищСто Π²Π΅Ρ‡Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° 64 Π·Π½Π°ΠΊΠ°, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ Латинска Π°Π·Π±ΡƒΠΊΠ°, Ρ†ΠΈΡ„Ρ€ΠΈ, ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΈ запСтая (Π½Π°ΠΉ-чСсти вмъквания Π² Π½Π΅-ASCII тСкстовС). ΠŸΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ към ASCII - ΠΈ основната част ΠΎΡ‚ ΠΊΠΈΡ€ΠΈΠ»ΠΈΡ†Π°Ρ‚Π° Ρ‰Π΅ станС спомагатСлна Π°Π·Π±ΡƒΠΊΠ°.

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ Π΄Π²Π΅ Π°Π·Π±ΡƒΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ голям Π±Ρ€ΠΎΠΉ тСкстовС с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π·Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π°Π·Π±ΡƒΠΊΠΈ (пунктуацията Π½Π°ΠΉ-чСсто Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ към ASCII, Π½ΠΎ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅-ASCII Π·Π½Π°Ρ†ΠΈ ΠΎΡ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° Π°Π·Π±ΡƒΠΊΠ°, Π±Π΅Π· ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ).

Бонус: поставянС Π½Π° прСфикс Π½Π° ΠΏΠΎΠ΄-Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π° 11xxxxxx ΠΈ ΠΈΠ·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎΡ‚ΠΎ ΠΌΡƒ отмСстванС 0xC0, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ частична ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с CP1252. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, ΠΌΠ½ΠΎΠ³ΠΎ (Π½ΠΎ Π½Π΅ всички) западноСвропСйски тСкстовС, ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ Π² CP1252, Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ Π² UTF-C.

Π’ΡƒΠΊ ΠΎΠ±Π°Ρ‡Π΅ възниква трудност: ΠΊΠ°ΠΊ Π΄Π° сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ спомагатСлна ΠΎΡ‚ основната Π°Π·Π±ΡƒΠΊΠ°? ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° оставитС ΡΡŠΡ‰ΠΎΡ‚ΠΎ отмСстванС, Π½ΠΎ - ΡƒΠ²ΠΈ - Ρ‚ΡƒΠΊ Unicode структурата Π²Π΅Ρ‡Π΅ ΠΈΠ³Ρ€Π°Π΅ срСщу нас. Много чСсто основната част ΠΎΡ‚ Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π° Π½Π΅ Π΅ Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ руската Π³Π»Π°Π²Π½Π° β€žΠβ€œ ΠΈΠΌΠ° ΠΊΠΎΠ΄Π° 0x0410, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ кирилският Π±Π»ΠΎΠΊ Π·Π°ΠΏΠΎΡ‡Π²Π° с 0x0400). По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, слСд ΠΊΠ°Ρ‚ΠΎ смС Π²Π·Π΅Π»ΠΈ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ 64 Π·Π½Π°ΠΊΠ° Π² скривалищС, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΎΠΏΠ°ΡˆΠ½Π°Ρ‚Π° част Π½Π° Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π°.

Π—Π° Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°ΠΌ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ€ΡŠΡ‡Π½ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ… ΠΏΡ€Π΅Π· някои Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ, ΠΈ посочих отмСстванСто Π½Π° спомагатСлната Π°Π·Π±ΡƒΠΊΠ° Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° основната Π·Π° тях. Латинската Π°Π·Π±ΡƒΠΊΠ°, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ бСшС ΠΏΡ€Π΅Π½Π°Ρ€Π΅Π΄Π΅Π½Π° ΠΊΠ°Ρ‚ΠΎ base64.

Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8

ПослСдни Ρ‰Ρ€ΠΈΡ…ΠΈ

НСка Π½Π°ΠΉ-накрая Π΄Π° помислим къдС Π΄Ρ€ΡƒΠ³Π°Π΄Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΠΌ Π½Π΅Ρ‰ΠΎ.

Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ 101xxxxx xxxxxxxx xxxxxxxx Π²ΠΈ позволява Π΄Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Ρ‚Π΅ числа Π΄ΠΎ 0x1FFFFF, Π° Unicode Π·Π°Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎ-Ρ€Π°Π½ΠΎ, Π½Π° 0x10FFFF. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, послСдната ΠΊΠΎΠ΄ΠΎΠ²Π° Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‰Π΅ бъдС прСдставСна ΠΊΠ°Ρ‚ΠΎ 10110000 11111111 11111111. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ Π°ΠΊΠΎ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Π±Π°ΠΉΡ‚ Π΅ ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° 1011xxxx (ΠšΡŠΠ΄Π΅Ρ‚ΠΎ xxxx ΠΏΠΎ-голямо ΠΎΡ‚ 0), Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Π½Π΅Ρ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΎΡ‰Π΅ 15 Π·Π½Π°ΠΊΠ° Ρ‚Π°ΠΌ, ΠΊΠΎΠΈΡ‚ΠΎ са постоянно Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π² Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚, Π½ΠΎ Ρ€Π΅ΡˆΠΈΡ… Π΄Π° Π³ΠΎ направя ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½.

НСка сСга Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠ½Π΅Π·ΠΈ Unicode Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ изискват Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π°. По ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, ΠΊΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ спомСнахмС, Ρ‚ΠΎΠ²Π° са китайски ΠΉΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„ΠΈ - Π½ΠΎ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π΅Ρ‰ΠΎ с тях, ΠΈΠΌΠ° 21 хиляди ΠΎΡ‚ тях. Но Ρ…ΠΈΡ€Π°Π³Π°Π½Π° ΠΈ ΠΊΠ°Ρ‚Π°ΠΊΠ°Π½Π° ΡΡŠΡ‰ΠΎ лСтяха Ρ‚Π°ΠΌ - ΠΈ Π²Π΅Ρ‡Π΅ няма Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ тях, ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ двСста. И Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ си спомнихмС японцитС, ΠΈΠΌΠ° ΠΈ Π΅ΠΌΠΎΡ‚ΠΈΠΊΠΎΠ½ΠΈ (Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚Π΅ са Ρ€Π°Π·ΠΏΡ€ΡŠΡΠ½Π°Ρ‚ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ мСста Π² Unicode, Π½ΠΎ основнитС Π±Π»ΠΎΠΊΠΎΠ²Π΅ са Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° 0x1F300 - 0x1FBFF). Ако сС замислитС Π²ΡŠΡ€Ρ…Ρƒ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ сСга ΠΈΠΌΠ° Π΅ΠΌΠΎΡ‚ΠΈΠΊΠΎΠ½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС сглобяват ΠΎΡ‚ няколко ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ навСднъТ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ΠΌΠΎΡ‚ΠΈΠΊΠΎΠ½ΠΈ ‍‍‍Друг вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8 сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ†Π΅Π»ΠΈ 7 ΠΊΠΎΠ΄Π°!), Ρ‚ΠΎΠ³Π°Π²Π° става пълСн срам Π΄Π° Ρ…Π°Ρ€Ρ‡ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π° Π·Π° всСки (7Γ—3 = 21 Π±Π°ΠΉΡ‚Π° Π² ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π΅Π΄Π½Π° ΠΈΠΊΠΎΠ½Π°, ΠΊΠΎΡˆΠΌΠ°Ρ€).

Π—Π°Ρ‚ΠΎΠ²Π° ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ няколко ΠΈΠ·Π±Ρ€Π°Π½ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈ Π½Π° Π΅ΠΌΠΎΠ΄ΠΆΠΈ, Ρ…ΠΈΡ€Π°Π³Π°Π½Π° ΠΈ ΠΊΠ°Ρ‚Π°ΠΊΠ°Π½Π°, ΠΏΡ€Π΅Π½ΠΎΠΌΠ΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ Π³ΠΈ Π² Π΅Π΄ΠΈΠ½ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ списък ΠΈ Π³ΠΈ ΠΊΠΎΠ΄ΠΈΡ€Π°ΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° вмСсто Ρ‚Ρ€ΠΈ:

1011xxxx xxxxxxxx

Π‘Ρ‚Ρ€Π°Ρ…ΠΎΡ‚Π½ΠΎ: горСспомСнатитС Π΅ΠΌΠΎΡ‚ΠΈΠΊΠΎΠ½ΠΈΠ”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8, ΡΡŠΡΡ‚ΠΎΡΡ‰ сС ΠΎΡ‚ 7 ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΎΡ‚Π½Π΅ΠΌΠ° 8 Π±Π°ΠΉΡ‚Π° Π² UTF-25 ΠΈ Π½ΠΈΠ΅ Π³ΠΎ поставямС Π² 14 (Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° Π·Π° всяка ΠΊΠΎΠ΄ΠΎΠ²Π° Ρ‚ΠΎΡ‡ΠΊΠ°). ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Habr ΠΎΡ‚ΠΊΠ°Π·Π° Π΄Π° Π³ΠΎ смила (ΠΊΠ°ΠΊΡ‚ΠΎ Π² стария, Ρ‚Π°ΠΊΠ° ΠΈ Π² новия Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€), Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π³ΠΎ вмъкна със снимка.

НСка сС ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ΠšΠ°ΠΊΡ‚ΠΎ си спомнямС, основната Π°Π·Π±ΡƒΠΊΠ° Π΅ ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ високи 6 Π±ΠΈΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ ΠΈ Π·Π°Π»Π΅ΠΏΠ²Π°ΠΌΠ΅ към ΠΊΠΎΠ΄Π° Π½Π° всСки слСдващ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ символ. Π’ случай Π½Π° китайски ΠΉΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Π² Π±Π»ΠΎΠΊΠ° 0x4E00 - 0x9FFF, Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠ»ΠΈ Π±ΠΈΡ‚ 0, ΠΈΠ»ΠΈ 1. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ: Ρ‰Π΅ трябва постоянно Π΄Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Π·ΠΈ Π΄Π²Π΅ стойности (Ρ‚.Π΅. Π΄Π° ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°ΠΌΠ΅ Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π°). Но ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Π² дългия Ρ€Π΅ΠΆΠΈΠΌ, ΠΎΡ‚ самия ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈΠΌ броя Π·Π½Π°Ρ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°ΠΌΠ΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° краткия Ρ€Π΅ΠΆΠΈΠΌ (слСд всички Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅, описани ΠΏΠΎ-Π³ΠΎΡ€Π΅, Ρ‚ΠΎΠ²Π° Π΅ 10240) - Ρ‚ΠΎΠ³Π°Π²Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΡŠΡ‚ ΠΎΡ‚ ΠΉΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„ΠΈ Ρ‰Π΅ сС измСсти към 0x2600 - 0x77FFΠΈ Π² Ρ‚ΠΎΠ·ΠΈ случай, Π² цСлия Ρ‚ΠΎΠ·ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Π½Π°ΠΉ-Π·Π½Π°Ρ‡ΠΈΠΌΠΈΡ‚Π΅ 6 Π±ΠΈΡ‚Π° (ΠΎΡ‚ 21) Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π²Π½ΠΈ Π½Π° 0. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ послСдоватСлноститС ΠΎΡ‚ ΠΉΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„ΠΈ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° Π½Π° ΠΉΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„ (ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΎ Π·Π° Ρ‚Π°ΠΊΡŠΠ² голям Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½), Π±Π΅Π· причинявайки смяна Π½Π° Π°Π·Π±ΡƒΠΊΠ°Ρ‚Π°.

АлтСрнативни Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: SCSU, BOCU-1

ЕкспСртитС ΠΏΠΎ Unicode, Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ ΠΏΡ€ΠΎΡ‡Π΅Π»ΠΈ Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° статията, Π½Π°ΠΉ-вСроятно Ρ‰Π΅ ΠΏΠΎΠ±ΡŠΡ€Π·Π°Ρ‚ Π΄Π° Π²ΠΈ напомнят, Ρ‡Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ срСд стандартитС Π½Π° Unicode ΠΈΠΌΠ° Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π° схСма Π·Π° компрСсиранС Π·Π° Unicode (SCSU), ΠΊΠΎΠΉΡ‚ΠΎ описва ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° описания Π² статията.

ΠŸΡ€ΠΈΠ·Π½Π°Π²Π°ΠΌ чСстно: Π½Π°ΡƒΡ‡ΠΈΡ… Π·Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π΅Π΄Π²Π° слСд ΠΊΠ°Ρ‚ΠΎ бях дълбоко ΠΏΠΎΡ‚ΠΎΠΏΠ΅Π½ Π² писанСто Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ си. Ако Π·Π½Π°Π΅Ρ… Π·Π° Ρ‚ΠΎΠ²Π° ΠΎΡ‚ самото Π½Π°Ρ‡Π°Π»ΠΎ, вСроятно щях Π΄Π° сС ΠΎΠΏΠΈΡ‚Π°ΠΌ Π΄Π° напиша имплСмСнтация, вмСсто Π΄Π° измисля собствСн ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ SCSU ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ΄Π΅ΠΈ, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ измислих сам (вмСсто концСпцията Π·Π° β€žΠ°Π·Π±ΡƒΠΊΠΈβ€œ Ρ‚Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ β€žΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈβ€œ ΠΈ ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ тях, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΈΠΌΠ°ΠΌ). Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈΠΌΠ° ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ: Ρ‚ΠΎΠΉ Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-близък Π΄ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΡ‚Π΅ Π·Π° компрСсиранС, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΄ΠΎ Ρ‚Π΅Π·ΠΈ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅. По-спСциално, ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΡŠΡ‚ Π΄Π°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° прСдставянС, Π½ΠΎ Π½Π΅ ΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ оптималния - Π·Π° Ρ‚ΠΎΠ²Π° Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€ΡŠΡ‚ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° някакъв Π²ΠΈΠ΄ Свристика. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ SCSU Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° Π΄ΠΎΠ±Ρ€Π° ΠΎΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°, Ρ‰Π΅ бъдС ΠΏΠΎ-слоТСн ΠΈ ΠΏΠΎ-Ρ‚Ρ€ΠΎΠΌΠ°Π² ΠΎΡ‚ моя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ.

Π—Π° сравнСниС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΡ… сравнитСлно проста рСализация Π½Π° SCSU към JavaScript - ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° ΠΊΠΎΠ΄Π° сС ΠΎΠΊΠ°Π·Π° сравнима с моя UTF-C, Π½ΠΎ Π² някои случаи Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ бСшС с дСсСтки ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° ΠΏΠΎ-лош (понякога ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ надвишава, Π½ΠΎ Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ). НапримСр тСкстовС Π½Π° ΠΈΠ²Ρ€ΠΈΡ‚ ΠΈ Π³Ρ€ΡŠΡ†ΠΊΠΈ бяха ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ с UTF-C 60% ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΎΡ‚ SCSU (вСроятно ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈΡ‚Π΅ ΠΈΠΌ Π°Π·Π±ΡƒΠΊΠΈ).

ΠžΡ‚Π΄Π΅Π»Π½ΠΎ Ρ‰Π΅ добавя, Ρ‡Π΅ освСн SCSU ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ прСдставянС Π½Π° Unicode - BOCU-1, Π½ΠΎ ΠΈΠΌΠ° Π·Π° Ρ†Π΅Π» MIME ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ (която Π½Π΅ ΠΌΠΈ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅) ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ към ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. НС съм оцСнявал СфСктивността ΠΌΡƒ, Π½ΠΎ ΠΌΠΈ сС струва, Ρ‡Π΅ Π΅Π΄Π²Π° Π»ΠΈ Ρ‰Π΅ Π΅ ΠΏΠΎ-висока ΠΎΡ‚ SCSU.

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈ подобрСния

ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ прСдставих, Π½Π΅ Π΅ унивСрсалСн ΠΏΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½ (Ρ‚ΡƒΠΊ вСроятно ΠΌΠΎΠΈΡ‚Π΅ Ρ†Π΅Π»ΠΈ сС Ρ€Π°Π·ΠΌΠΈΠ½Π°Π²Π°Ρ‚ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ с Ρ†Π΅Π»ΠΈΡ‚Π΅ Π½Π° Unicode Consortium). Π’Π΅Ρ‡Π΅ спомСнах, Ρ‡Π΅ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ основно Π·Π° Π΅Π΄Π½Π° Π·Π°Π΄Π°Ρ‡Π° (ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π΅Π½ Ρ€Π΅Ρ‡Π½ΠΈΠΊ Π² прСфиксно Π΄ΡŠΡ€Π²ΠΎ) ΠΈ някои ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΌΡƒ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ са подходящи Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. Но Ρ„Π°ΠΊΡ‚ΡŠΡ‚, Ρ‡Π΅ Π½Π΅ Π΅ стандарт, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ плюс - ΠΌΠΎΠΆΠ΅Ρ‚Π΅ лСсно Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, Π·Π° Π΄Π° отговаря Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ.

НапримСр, ΠΏΠΎ очСвидния Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅Ρ‚Π΅ ΠΎΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π±Π΅Π· ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ - просто Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ offs, auxOffs ΠΈ is21Bit Π² Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€Π° ΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π°. Π’ Ρ‚ΠΎΠ·ΠΈ случай няма Π΄Π° Π΅ възмоТно Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΄Π° сС ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†ΠΈ ΠΎΡ‚ Π·Π½Π°Ρ†ΠΈ ΠΎΡ‚ Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° Π°Π·Π±ΡƒΠΊΠ°, Π½ΠΎ Ρ‰Π΅ ΠΈΠΌΠ° гаранция, Ρ‡Π΅ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ Π·Π½Π°ΠΊ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ с Π΅Π΄Π½ΠΈ ΠΈ ΡΡŠΡ‰ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, нСзависимо ΠΎΡ‚ контСкста.

ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° приспособитС Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€Π° към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ Π΅Π·ΠΈΠΊ, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°Ρ‚ΠΎ сС фокусиратС Π²ΡŠΡ€Ρ…Ρƒ руски тСкстовС, Π·Π°Π΄Π°ΠΉΡ‚Π΅ Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€Π° ΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ offs = 0x0400 ΠΈ auxOffs = 0. Π’ΠΎΠ²Π° ΠΈΠΌΠ° особСно смисъл Π² случай Π½Π° Ρ€Π΅ΠΆΠΈΠΌ Π±Π΅Π· ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅. ΠšΠ°Ρ‚ΠΎ цяло Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° старото осСмбитово ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅, Π½ΠΎ Π±Π΅Π· Π΄Π° сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° вмъкванС Π½Π° Π·Π½Π°Ρ†ΠΈ ΠΎΡ‚ всички Unicode, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π”Ρ€ΡƒΠ³ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ, спомСнат ΠΏΠΎ-Ρ€Π°Π½ΠΎ, Π΅, Ρ‡Π΅ Π² голям тСкст, ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ Π² UTF-C, няма Π±ΡŠΡ€Π· Π½Π°Ρ‡ΠΈΠ½ Π·Π° Π½Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° Π½Π° Π·Π½Π°ΠΊΠ°, която Π΅ Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π±Π°ΠΉΡ‚. Ако ΠΎΡ‚Ρ€Π΅ΠΆΠ΅Ρ‚Π΅ послСднитС, Π΄Π° Ρ€Π΅Ρ‡Π΅ΠΌ, 100 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ кодирания Π±ΡƒΡ„Π΅Ρ€, рискуватС Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π±ΠΎΠΊΠ»ΡƒΠΊ, с ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½ΠΈΡ‰ΠΎ. ΠšΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π΅ Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ΠΎΠ²ΠΈ рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ цяло Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΎ. Π‘Π°ΠΉΡ‚ 0xBF Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ трябва Π΄Π° сС появява ΠΊΠ°Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΈ Π±Π°ΠΉΡ‚ (Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²Ρ‚ΠΎΡ€ΠΈ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈ). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Ρ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΌΡŠΠΊΠ½Π΅Ρ‚Π΅ послСдоватСлността 0xBF 0xBF 0xBF всСки, Π΄Π° Ρ€Π΅Ρ‡Π΅ΠΌ, 10 KB - Ρ‚ΠΎΠ³Π°Π²Π°, Π°ΠΊΠΎ трябва Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π³Ρ€Π°Π½ΠΈΡ†Π°, Ρ‰Π΅ бъдС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° сканиратС ΠΈΠ·Π±Ρ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΠ°Ρ€Ρ‡Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ сС Π½Π°ΠΌΠ΅Ρ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€. Π‘Π»Π΅Π΄ послСдното 0xBF Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ Π΅ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Π³Π΅Ρ€ΠΎΠΉ. (ΠšΠΎΠ³Π°Ρ‚ΠΎ сС Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°, Ρ‚Π°Π·ΠΈ послСдоватСлност ΠΎΡ‚ Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, трябва Π΄Π° сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°.)

Π Π΅Π·ΡŽΠΌΠΈΡ€Π°Π½Π΅

Ако стС ΠΏΡ€ΠΎΡ‡Π΅Π»ΠΈ Π΄ΠΎΡ‚ΡƒΠΊ, поздравлСния! Надявам сС, Ρ‡Π΅ ΠΈ Π²ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ ΠΌΠ΅Π½ стС Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π΅Ρ‰ΠΎ Π½ΠΎΠ²ΠΎ (ΠΈΠ»ΠΈ стС освСТили ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° си) Π·Π° структурата Π½Π° Unicode.

Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8
Π”Π΅ΠΌΠΎ страница. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΠΈΠ²Ρ€ΠΈΡ‚ ΠΏΠΎΠΊΠ°Π·Π²Π° прСдимствата ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΡ€Π΅Π΄ UTF-8, Ρ‚Π°ΠΊΠ° ΠΈ ΠΏΡ€Π΅Π΄ SCSU.

ГорСописанитС изслСдвания Π½Π΅ трябва Π΄Π° сС считат Π·Π° посСгатСлство Π²ΡŠΡ€Ρ…Ρƒ стандартитС. ΠšΠ°Ρ‚ΠΎ цяло ΠΎΠ±Π°Ρ‡Π΅ съм Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ моята Ρ€Π°Π±ΠΎΡ‚Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ съм Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ ΠΎΡ‚ тях дял: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° JS Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ‚Π΅ΠΆΠΈ само 1710 Π±Π°ΠΉΡ‚Π° (ΠΈ няма зависимости, Ρ€Π°Π·Π±ΠΈΡ€Π° сС). ΠšΠ°ΠΊΡ‚ΠΎ спомСнах ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π½Π΅ΠΉΠ½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π° Π½Π° Π΄Π΅ΠΌΠΎ страница (ΠΈΠΌΠ° ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ тСкстовС, ΠΏΠΎ ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС сравни с UTF-8 ΠΈ SCSU).

И накрая, ΠΎΡ‚Π½ΠΎΠ²ΠΎ Ρ‰Π΅ ΠΎΠ±ΡŠΡ€Π½Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° случаитС, Π² ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° UTF-C Π½Π΅ си струва:

  • Ако Π²Π°ΡˆΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ са Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ дълги (ΠΎΡ‚ 100-200 Π·Π½Π°ΠΊΠ°). Π’ Ρ‚ΠΎΠ·ΠΈ случай трябва Π΄Π° помислитС Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° компрСсиранС ΠΊΠ°Ρ‚ΠΎ deflate.
  • Ако сС Π½ΡƒΠΆΠ΄Π°Π΅Ρˆ ASCII прозрачност, тоСст Π·Π° вас Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ послСдоватСлности Π΄Π° Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ ASCII ΠΊΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Π±ΠΈΠ»ΠΈ Π² оригиналния Π½ΠΈΠ·. НСобходимостта ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚Π°, Π°ΠΊΠΎ ΠΏΡ€ΠΈ взаимодСйствиС с API Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π° с Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ) ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΊΠ°Ρ‚ΠΎ абстрактСн Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, Π° Π½Π΅ ΠΊΠ°Ρ‚ΠΎ Π½ΠΈΠ·ΠΎΠ²Π΅. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай рискуватС Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈ уязвимости.
  • Ако искатС Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±ΡŠΡ€Π·ΠΎ Π΄Π° Π½Π°ΠΌΠΈΡ€Π°Ρ‚Π΅ Π³Ρ€Π°Π½ΠΈΡ†ΠΈ Π½Π° Π·Π½Π°Ρ†ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ отмСстванС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π°Ρ‚ΠΎ част ΠΎΡ‚ Ρ€Π΅Π΄ Π΅ ΠΏΠΎΠ²Ρ€Π΅Π΄Π΅Π½Π°). Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° станС, Π½ΠΎ само Ρ‡Ρ€Π΅Π· сканиранС Π½Π° Ρ€Π΅Π΄Π° ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ (ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° модификацията, описана Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ Ρ€Π°Π·Π΄Π΅Π»).
  • Ако трябва Π±ΡŠΡ€Π·ΠΎ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΡŠΡ€Ρ…Ρƒ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ (сортирайтС Π³ΠΈ, Ρ‚ΡŠΡ€ΡΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π½ΠΈΠ·ΠΎΠ²Π΅ Π² тях, ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½ΠΈΡ€Π°ΠΉΡ‚Π΅). Π’ΠΎΠ²Π° изисква ΠΏΡŠΡ€Π²ΠΎ Π΄Π° сС Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Ρ‚ Π½ΠΈΠ·ΠΎΠ²Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ UTF-C Ρ‰Π΅ бъдС ΠΏΠΎ-Π±Π°Π²Π΅Π½ ΠΎΡ‚ UTF-8 Π² Ρ‚Π΅Π·ΠΈ случаи (Π½ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π· ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΡ‚Π΅ Π·Π° компрСсиранС). Въй ΠΊΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ Π½ΠΈΠ· Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ сравнСниС Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π° Π±Π°Π·Π° Π±Π°ΠΉΡ‚ ΠΏΠΎ Π±Π°ΠΉΡ‚.

Update: ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π’ΡŒΠΎΠΌΠΈΡ‡ Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π²Π°Ρ‰Π° Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° прилоТимост Π½Π° UTF-C. Π’ΠΎΠ²Π° ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ UTF-C Π΅ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° компрСсия с ΠΎΠ±Ρ‰ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (разновидност Π½Π° LZW), стига пакСтираният Π½ΠΈΠ· Π΄Π° Π΅ ΠΏΠΎ-къс ~140 Π·Π½Π°ΠΊΠ° (отбСлязвам ΠΎΠ±Π°Ρ‡Π΅, Ρ‡Π΅ сравнСниСто Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ Π²ΡŠΡ€Ρ…Ρƒ Π΅Π΄ΠΈΠ½ тСкст; Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π·ΠΈΡ†ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°).
Π”Ρ€ΡƒΠ³ вСлосипСд: ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Unicode Π½ΠΈΠ·ΠΎΠ²Π΅ с 30-60% ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ ΠΎΡ‚ UTF-8

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€