β‘ ΠΠ»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠΈΡΠ»ΠΎ Π±Π°ΠΉΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π²Π΅Π΄ΡΡΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
β‘ ΠΠ²Π° ΠΏΠ΅ΡΠ²ΡΠ΅ Π±ΠΈΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π±Π°ΠΉΡΠ° ΡΠ°Π²Π½Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΠΈ Π½ΡΠ»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
β‘ ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°.
Π ΡΠ°Π±Π». 1.2 Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡ, Π½ΡΠΆΠ½ΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΡΠΎΡΠΌΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄Π°.
Π’Π°Π±Π»ΠΈΡΠ° 1.2. Π€ΠΎΡΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² UTF-8
ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΠΎΠ»-Π²ΠΎ Π±Π°ΠΉΡ Π€ΠΎΡΠΌΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠΎΠ»-Π²ΠΎ Π±ΠΈΡ #x0-#x7F 1 0xxxxxxx 7 #x80-#x7FF 2 110xxxxx 10xxxxxx 11 #x800-#xFFFF 3 1110xxxx 10xxxxxx 10xxxxxx 16 #x10000- #x1FFFFF 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 21Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠΈΠΌΠ²ΠΎΠ»Ρ "Π" (Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΡΠΊΠΎΠΉ Π±ΡΠΊΠ²Π΅ "Π") Unicode ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ΄ #x42D ΠΈΠ»ΠΈ 10000101101 Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» #x80-#x7ff, Π·Π½Π°ΡΠΈΡ, Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²ΡΡ -Π±Π°ΠΉΡΠΎΠ²ΡΡ ΡΠΎΡΠΌΡ Π²ΠΈΠ΄Π° 110xxxxx 10xxxxxx, Π³Π΄Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ "x" ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ 11 Π±ΠΈΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄:
11010000 10101101
ΠΈΠ»ΠΈ #xD0AD Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ.
ΠΠΎΠ»ΡΠΆΠΈΡΠ½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π±ΠΈΡΡ UTF-8 (110 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ Π΄Π²ΡΡ Π±Π°ΠΉΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, 10 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΡΠΎΡΠΎΠΉ Π±Π°ΠΉΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ), ΠΊΡΡΡΠΈΠ²ΠΎΠΌ β Π±ΠΈΡΡ ΠΊΠΎΠ΄Π° ΡΠΈΠΌΠ²ΠΎΠ»Π°.
Π£Π΄ΠΎΠ±ΡΡΠ²ΠΎ UTF-8 Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠ΅ΡΠ²ΡΡ 127 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠΈΡΠΎΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ 7-Π±ΠΈΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ ASCII. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° Π² UTF-8, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ².
UTF-16ΠΠ»Ρ Π·Π°ΠΏΠΈΡΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ, ΠΌΠ΅Π½ΡΡΠΈΠΌΠΈ #xFFFF, UTF-16 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π²ΡΡ Π±Π°ΠΉΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π±ΠΈΡΡ ΠΊΠΎΠ΄Π°. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, Π² UTF-16 ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ #10000-#FFFFF. ΠΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² UTF-16 ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠ°ΡΡ 16-Π±ΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ #xD800-#xDFFF (ΡΠ°Π½Π΅Π΅ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Unicode), Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΡΡΠΎΠ³Π°ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠΈ (surrogate pairs). ΠΠ»Π°Π΄ΡΠΈΠ΅ 10 Π±ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΠ²ΠΎΠ΄ΡΡΡΡ Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΡΡΠΎ Π² ΠΈΡΠΎΠ³Π΅ Π΄Π°Π΅Ρ 20 Π±ΠΈΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠ΅Π³ΠΎ #xFFFFF (ΡΠ°Π±Π». 1.3).
Π’Π°Π±Π»ΠΈΡΠ° 1.3. Π€ΠΎΡΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² UTF-16
ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΠΎΠ»-Π²ΠΎ Π±Π°ΠΉΡ Π€ΠΎΡΠΌΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠΎΠ»-Π²ΠΎ Π±ΠΈΡ #x0-#xD7FF 2 xxxxxxxx xxxxxxxx 16 #xD800-#xDFFF ΠΠ°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Ρ #xE000-#xFFFF 2 xxxxxxxx xxxxxxxx 16 #x10000-#xFFFFF 4 110110xxxxxxxxxx 110110xxxxxxxxxx 20 ΠΡΠΈΠΌΠ΅ΡΡΠ‘ΠΈΠΌΠ²ΠΎΠ» "Π" Ρ ΠΊΠΎΠ΄ΠΎΠΌ #x42D Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΠ°Π½ Π² UTF-16 Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ· Π΄Π²ΡΡ Π±Π°ΠΉΡ β #x042D.
ΠΠ»Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° Ρ ΠΊΠΎΠ΄ΠΎΠΌ #x153DC (Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ β 10101001111011100) ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ 4 Π±Π°ΠΉΡΠ°. ΠΠ½ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΠ°Π½ Π² Π²ΠΈΠ΄Π΅
1101100001010100 1101101111011100
ΠΈΠ»ΠΈ #xD854DBDC Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΌ ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ.
ΠΠΎΠ»ΡΠΆΠΈΡΠ½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π±ΠΈΡΡ UTF-16, ΠΊΡΡΡΠΈΠ²ΠΎΠΌ β Π±ΠΈΡΡ ΠΊΠΎΠ΄Π° ΡΠΈΠΌΠ²ΠΎΠ»Π°.
UTF-32UTF-32 ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΎΡΠΌΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 4 Π±Π°ΠΉΡΠ°. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±, Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΠΎ, Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΌ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½ΡΠΌ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΠΊΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠΎΠ΄Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Unicode
Π ΡΠ°Π±Π»ΠΈΡΠ°Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Unicode ΠΊΠΎΠ΄ΠΈΡΡΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ Π·Π½Π°ΠΊΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΡΠ°Π·ΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΎΠ±Π΅Π» (no-break space), ΡΠ°Π±ΡΠ»ΡΡΠΈΡ, ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠΎΠ΄Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ· ΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΡ Π² XML-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ , ΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌ Π² ΡΠ°Π±Π». 1.4.
Π’Π°Π±Π»ΠΈΡΠ° 1.4. Unicode-ΠΊΠΎΠ΄Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
ΠΠΎΠ΄ ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ #Ρ 9 [ΠΠ’] ΠΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π±ΡΠ»ΡΡΠΈΡ (horizontal tabulation) #xA [LF] ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ (line feed) #xD [CR] ΠΠΎΠ·Π²ΡΠ°Ρ ΠΊΠ°ΡΠ΅ΡΠΊΠΈ (carriage return) #x20 [SP] ΠΡΠΎΠ±Π΅Π» (space) #x21 ! ΠΠΎΡΠΊΠ»ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π½Π°ΠΊ (exclamation sign) #x22 " ΠΠ²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ (quotation mark) #x26 & ΠΠΌΠΏΠ΅ΡΡΠ°Π½Ρ (ampersand) #x27 ' ΠΠΏΠΎΡΡΡΠΎΡ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ (apostrophe) #x3C < ΠΠ½Π°ΠΊ "ΠΌΠ΅Π½ΡΡΠ΅" ΠΈΠ»ΠΈ Π»Π΅Π²Π°Ρ ΡΠ³Π»ΠΎΠ²Π°Ρ ΡΠΊΠΎΠ±ΠΊΠ° (less-than sign) #x3F ? ΠΠΎΠΏΡΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π½Π°ΠΊ (question mark) #xA0 [NBSP] ΠΠ΅ΡΠ°Π·ΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΎΠ±Π΅Π» (no-break space)ΠΠΎΠ΄Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Web-ΡΠ°ΠΉΡΠ΅ Unicode Consortium Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Code Charts: http://www.unicode.org/charts/.
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ XML
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Unicode, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² XML, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΡΡ EBNF-ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ° β ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΈΠΌΠ΅Π½, ΠΈΠΌΠ΅Π½Π½ΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ.
Π XML ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Unicode, ΠΊΡΠΎΠΌΠ΅ ΡΡΡΡΠΎΠ³Π°ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ #xFFFE ΠΈ #xFFFF:
[2] Char ::= #x9 | #xA | #xD | [#x20 - #xD7FF]
| [#Ρ Π000 - #xFFFD) | [#Ρ 10000 - #x10FFFF]
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π²ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ.
β‘ ΠΡΠΊΠ²Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ Letter, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ (BaseChar) ΠΈ ΠΈΠ΄Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ (Ideographic). ΠΡΠΊΠ²Ρ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π°Π»ΡΠ°Π²ΠΈΡΠ°ΠΌ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΡΡ ΡΠ»ΠΎΠ²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ². ΠΡΠΎΠ΄ΡΠΊΡΠΈΠΈ Π±ΡΠΊΠ² ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΎΡΡΡ, Π½ΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π°Π»ΡΠ°Π²ΠΈΡΠΎΠ². Π§ΠΈΡΠ°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡΠΈ ΠΈΡ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ XML ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.w3.org/TR/REC-xml.html ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌΠΈ [84] (Letter), [85] (BaseChar) ΠΈ [86] (Ideographic).
β‘ Π¦ΠΈΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΡΠ»ΡΡΡΡΠ°Ρ ΡΠΈΡΠ»Π°. Π¦ΠΈΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ΅ΠΉ Digit Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ [88].
β‘ ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ (CombiningChar), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π²ΡΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, #x308 β Π΄Π²ΠΎΠΉΠ½Π°Ρ ΡΠΎΡΠΊΠ° ΡΠ²Π΅ΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΌΠ»ΡΡΡΠ° Π² Π½Π΅ΠΌΠ΅ΡΠΊΠΎΠΌ ΠΈ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ e Π½Π° Ρ Π² ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΡΠΎΠ΄ΡΠΊΡΠΈΡ CombiningChar ΠΈΠΌΠ΅Π΅Ρ Π½ΠΎΠΌΠ΅Ρ [87].
β‘ Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ (Extender). ΠΡΠΎΠ΄ΡΠΊΡΠΈΡ Extender ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ [89].
Π‘Π»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ S. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅ΡΠ΅ ΡΠ°Π· Π΅Π³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ:
[3] S ::= (#Ρ 9 | #Ρ Π | #xD | #x20)+
ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΡ XML-ΡΠ·ΡΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ΅Π½Π° Π΄Π°ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ, Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ XPath ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ Π»Π΅ΠΆΠ°Ρ ΠΈΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ NameChar:
[4] NameChar ::= Letter | Digit | CombiningChar | Extender
| '.' | '-' | '_' | ':'
ΠΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π»ΠΈΠ±ΠΎ Π±ΡΠΊΠ²ΠΎΠΉ, Π»ΠΈΠ±ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ "_" ΠΈΠ»ΠΈ ":" ΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
[5] Name ::= (Letter | '_' | ' :') (NameChar*)
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ XML ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π½, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ Names:
[6] Names ::= Name (S Name)*
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΠΊΠ΅Π½ NmToken β ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ², NmTokens.