ááᢠá¨ááá áĽá á˘ááŽá˛áá á¨ááá¨áĽ áľáŤ áŤáá áá
áŠááŽáľ áá áá áľáááá áááľá ááááᢠá¨á°áá°áá á¨áááá áá´ á ááá°-á˝áá áá á¨á°áá°á¨á° áá, áá áĽááá áá áĽáá
á áááá°áá áááľ á á - UTF-8. áĽáŠá ááá áááá á¨áŠááŽáľ ááááá˝á áŤáááá á᪠áĽááľáľá áá ááá
áľááá áĽáá˛á á á áĽááááš áááłáá˝ áĽá áŁááľ. áĽáááľ ááᣠá¨áá˛á áá°ááľ á áá ááá áá ááááá˝ âáĽá á áá°ááâ á˘áŤááľ ááᢠáááľ áŁááľ á ááá. áá° 256 á¨ááá ááááá˝ áĽáť á¨áááľáĄá áá° á
áľá-áłáŞá á˘ááŽá˛áá áłááááľ á¨á°áťá ááľá¨á áĽáá˝ááá?
á¨áá
á áłá˝ áá
áá áĽáŤá áááááľ áŁá°á¨áŠáľ áá¨áŤ áĽáŤáľáá á á°áἠáĽáá˛áŤáá áĽá á á áĽááááš á¨á áá ááááá˝ ááľááŽá˝á á UTF-8 ááľáĽ áłáá¨áአá á áááŤá ááá áľáá° ááá á°ááŁáŤá áááľá¨á ááłáĽ á áááŁááá˘
ááľá°áŁá ፠áá˛áŤáá áĽááľ á áľááá áŚáłáá˝á á á°áááááĄ- á¨á°ááá¸á áááľá á UTF-8 áááá°áá ááľá áá á áá°áĽá, á á áŁáĽ á¨ááłá áááá ááľáĽ áĽáť á°áľáá áá (á¨áá á áłá˝ á áĽáááą áá á°á¨ááŞ), áĽá á ááá á áááľ áááł á¨áśáľá°á ááá á¤áá ááá˝ (áľááĽáą áĽááłá á¨ááŤáááľ) áá ááááŁáŁáľ áĽá á áá ááá á¨áá áľá. á áŁá áĽá áá á á ááá-ááá áááá፠áľáá° áááŽá˝ (áááłá, deflate) áľáá áá á áŤáá¸áá á¨á˝áá áá¨ááá˝á ááá¨áá¸áľ á°áľáá áá¸á. á á°á¨ááŞá ᣠááľááá á¨áĽáá áááľá á ááá á áá°áľ ááľáĽ ᣠá áŠááŽáľ áŤáą ááľáĽ á ááľ ááŁá á°á¨á á ááá ᣠáĽáąá á°ááłáłá á˝ááá á¨áááł - ââá á°áá°á á°á¨á á¨á°ááłá°á (áĽá áĽááá áá á¨á¨á) áá ᣠáá á ááá á°ááŁáááľ áŤáá á°á¨á áá ᣠáĽá áĽáť á áá°áá ᢠá ááá áą áá á ááľ áá. áľá áĽáąá áĽáááŤá˝áááá˘
áľá áŠááŽáľ áĽá UTF-8
ááááá, áľá áá áĽáá°áá áĽááľ áááľ áŠááŽáľ и á UTF-8.
áĽáá°ááłáááᣠáŁá 8-á˘áľ á˘ááŽá˛áá áłáá áá áᢠá áĽááą, ááá ááá ááá áá á: 256 ááááὠᨠ0 áĽáľá¨ 255 ááĽáŽá˝ ááá አáá˝áá, áĽá ᨠ0 áĽáľá¨ 255 áŤááľ ááĽáŽá˝ áĽáá° á ááľ áŁááľ ááá¨á áá˝áá. áá° ááááŞáŤá á¨á°áááľá ᣠᨠASCII á˘ááŽá˛áá áá á áá á 7 á˘áľ áĽáť á¨á°áá°á áá ᣠáľáááá á áŁááľ áááá ááľáĽ á áŁá á áľáááá á˘áľ áᎠáá ᣠáĽá á áĽááááš 8-á˘áľ á˘ááŽá˛áááá˝ á¨áĽáą áá á°áłáá áá¸á (áĽááą á âááááâ ááľáĽ áĽáť áááŤáŤá) ááá, á áŁá á áľáááá á˘áľ á ááľ á¨áá).
áŠááŽáľ á¨áá፠á˘ááŽá˛áá áĽáá´áľ áááŤá áĽá ááááľáá áĽá áአáááááá˝ á¨áą áá á¨á°áŤáŤááľ - UTF-8ᣠUTF-16 (BE áĽá LE)ᣠUTF-32? á á á°á á°á¨á°á áĽáá¨áá˘
áá á¨áłáá á¨áŠááŽáľ áľáłááłááľ á¨áááá¸á á áá¸-áŁá
áŞáŤáľ ááŤá¨á áŤááá áááááľ áĽáť áá (áĽá á á ááłááľ áááłáá˝ á¨ááááá˝ ááá áááá˝) áĽá ááĽáŤá¸áᢠáĽá á áá
ááľáááľ ááľáĽ áĽá ááá á¨áá˝á ááĽáŽá˝ á á - ᨠ0x00
áá° 0x10FFFF
(1 áááĽáŤáŽá˝)ᢠá áĽáá°áá
ááááľ ááá ááľáĽ ááĽáá áá° á°áááá áááľááἠá¨áááá 114 ááá 112 áŁááľ á áá ááá áá áᢠáĽá ááŽá°á°áŽáťá˝á á¨áśáľáľ áŁááľ ááĽáŽá˝ áá áááľáŤáľ á áŁá á¨á°áá°á áľáááá á á ááľ ááá áĽáľá¨ 1 áŁááľ ááá áá áĽááá°áłáá! áá
UTF-2 áá, áá á áľááá á áá
"áĽáááľ" ááááŤáľ áá
á
áááľ áłáá á áá°áá.
áĽáá° áĽáľá ááᣠá áŠááŽáľ ááľáĽ áŤá á¨ááááá˝ á
á°á á°á¨á°á á áááá° á áá°ááᢠá¨áĽááą áľáĽáľáĽ á 17 "á¨á°á¨áá áá.á ááŽáááá˝áĽáŤááłááłá¸á 65536 () áááá0x10000
)áŽáľ ááĽáŚá˝" áĽáá
ᨠ"áŽáľ ááĽáĽ" á˝áá°-ááłáĽ ááá áá á¨ááá ááĽáá áŠááŽáľ á°ááľáŚááłáᢠááá áá á¨áá áĽáá°á°á áá°á á áŠááŽáľ ááľáĽ á¨ááá°áĽ ááááá˝ áĽáť áłááá ááááťá¸á áĽá á¨á áááááľ ááááśá˝á (áĽá á ááłááľ áá á¨ááĽáŠ áá ááá á áááłá°áá - ááááŁáľ áááá, ááĽá áá áá
á áŁá á áľááá á áá°áá) á¨á áá áľááá áá áá áá á á°áá áľá ááĽáŽá˝ áĽááľ áááŤáľ áĽáá ááááśá˝á á áá°ááᢠááá ᣠá áá¨á°áá ááľáĽ ᣠáá áá áá ᣠââáĽááá áá âááááľâ á¨áááá áá áĽá áááá ᣠáá
á âá¨áŽáľ ááĽáĽâ á¨áááá áá áŤáłáŤá á˘
á¨áŠááŽáľ á ááŽáááá˝. áĽáá°áááá¨áąáľ, á áĽááá (ᨠ4 áĽáľá¨ 13 á ááŽáááá˝) á ááá áĽá
á áá á áááá.
á áŁá á¨ááŤáľá°ááá ááá á˘áá ááá ááá âpulpâ á áᎠá ááŽááá ááľáĽ ááááą áá ᣠáĽáą ááŁáááá°á¨áłá áŁááĽá ááá á ááŽáááá ááľ ááľáá á¨áááá ááááá˝ á á ááą (áťáááá á¨ááŽ) á˝áá á¨áŤáᣠá¨áá
á ááŽááá ááá á áá˝ááᢠáá á¨áá¨áá á¨áŠááŽáľ ááá ááá¨áĽ á áá˝áá - áááłá á˘áá á áááááľ á¨áááá á ááŁáŠ á ááŽááá"á°á¨á᪠áŁááĽá ááá á ááŽááá"(ᨠ0x10000
áá° 0x1FFFF
). áľááá
UTF-16 áá
á áŤá°ááá: ááá ááááá˝ áá° ááľáĽ áááľáá áá°á¨áłá áŁááĽá ááá á ááŽáááᣠâáĽáá°ááâ á¨áááá°á áŁá áááľ áŁááľ ááĽá áá á°ááá ááᢠááá ᣠá áá
ááá ááľáĽ áŤááľ á ááłááľ ááĽáŽá˝ á¨á°áá°á ááááá˝á á ááŤá˝ á áŤááááąá ᣠáá á¨áá
áĽááľ áŁááľ á áá ááá áááľ ááľáĽ ááľááŁáľ áĽááłááĽá áŤááááłá - á¨áĽááá
á á áŤáľ áŁááľ áĽá´áśá˝ á á ááľ áá á ááŁáá ᣠá¨áá¸áááá ááĽá áĽááááá áľááááá á¨áŠááŽáľ áááᢠáá
ááłáĽ "á°á°áŞ áĽááśá˝" á°áĽá áá áŤá - áľááĽááą á°áá°á áááá.
áľááá
UTF-16 á "áŽáľ ááĽáĽ" áááľ ááá (á áŁá á áá á áá) á áŤáľ áŁááľ áŤáľáááááᢠáá
áááá á áŤáľ áŁááľ á¨áá áá á¨á°áťá áá, ááá áá á¨áá˛á (áĽá ááὠᨠASCII ááááá˝) á áá
ááááľ á˛ááᥠááášá áŚáł á ááŽáá˝ áá áŤáŁááá. UTF-8 áá
áá áááľá°áŤá¨á á¨á°áá°á áá-ASCII á ááľáĄ áááá, áá áĽáá°á ááą, á ááľ áŁááľ áĽáť; áŽáśá˝ ᨠ0x80
áá° 0x7FF
- áááľ áŁááľ; ᨠ0x800
áá° 0xFFFF
- áśáľáľ, áĽá ᨠ0x10000
áá° 0x10FFFF
- á áŤáľ. á á ááľ á áŠá, á¨áá˛á áá°ááľ áĽáŠ ááá: ᨠASCII áá áŤáá á°áłááááľ á°áááˇá, áĽá áľááṠᨠ1 áĽáľá¨ 4 áŁááľ "á¨á°áá¨á" áá. áá á¨áá˛á áá áá°áᾠᣠáᎠᣠᨠUTF-16 áá á˛áááአá ááá ááááľ á áá á
áá ᣠáĽá áĽááá˝ á áá á¨áááľ ááá
áśáľáľ áŁááľ ááááá - á áááľ-áŁááľ áááἠá¨á°á¸ááá ááá á 32 áá áááˇá ᣠ0xFFFF
áá° 0x7FF
, áĽá áťáááá áá, áááłá, ááááŤá á ááľáĄ á áá°áŤá°áąá. á˛áŞáá áĽá ááá˝ á ááľáľ áá°ááľ - ááŹá - áĽáľáá ᣠ2 áŁááľ á áááá˘
áá
ááá áá¨á°áłá? UTF-8 áĽáá´áľ á¨ááá áŽáśá˝á áĽáá°áááá áĽáááĄ
ááĽáŽá˝á áááá¨á á ááĽáł á ááááą ááááľ á¨á°á°á¨ááŁá¸á á˘áľ áĽáá
áĽá
á áá áááá x
. á áááľ-áŁááľ áááἠááľáĽ áĽáá°áá
áŤá 11 á˘áľ (ᨠ16 ááľáĽ) áĽáť áĽááłá áá¨áľ ááťáá. áĽáá
áŤááľ á᪠á˘áľáľ á¨áłáľ á°ááŁá áĽáť áá áŤáá¸áᢠá á áŤáľ áŁááľ áááἠ21 ᨠ32 á˘áľ ááŽáľ ââááĽáĽ ááĽá ááá°áŁá - áśáľáľ áŁááľ (á á á ááá 24 á˘áľ áá°áŁá) á á áááľáá ᣠáá á¨á áááááľ á áááá˝ á áŁá áá áá á˘
áá
ááĽá áá? áĽáááł á áá°áá. á á ááľ á áŠáᣠáľá áŚáł áĽá á¨ááá¨áá
á¨ááᣠáááá á°á¨á᪠á˘ááľáŽá áĽá áľáááá˝á á ááá á¨ááŤáľáááą á¨áááá፠áľáá° áááŽá˝ á ááᢠá áá á áŠáᣠá¨áŠááŽáľ áἠá¨ááťááá ááá á áá áŽáľ ááľá áľ áá áᢠáááłáᣠá UTF-8 á¨á°áááá ááľáá á¨áá
áá°á ᨠASCII áá áĽáť áá°áŤ á¨áá á¨áá áŽáľ áĽáá˛á°á á á á°áŤ ááá áĽáá˝áááᣠáĽá ᨠASCII ááá á¨áᣠáḠáŁá
᪠áŤáŤá áĽáá á áááŤá (á¨ááá á áá á UTF-8 ááá) áŁááľ á¨áᎠá˘áľ ááᎠ- áá
á áľááá ASCII áá)ᢠáĽá áľáááľ á¨ááááŞáŤá ááᎠá˛áŽá˛áá áłáá°áá (ááá á¨á°á áá¸á ááá á áá á¨á°áá°ááá áá¨á áá°áá á¨á áľ áááááľ) á¨áľáá
áááľ áá áľáá˝ á
áŤáľá ááá¨áĽ á¨áááá, áḠáŁá
᪠á¨ááááá áľá ááŤáŤáť ááááľ ááá áááááá (á á áá). áľáá˝ á
áľá á
áĽáŤ áŤáá¸áá áŁááľ ááááá 10
).
ááá á á˛áľ ááá ááá°á?
á á°ááłáłá ááᣠáĽáá° á˛áááľ áŤá á¨áááá፠áľáá° áááŽá˝ á á°áἠá¨ááá°áá áŠáŁá¸á áááłáá˝áŁ ááá áá á¨áłáá á¨ááĽá¨ááááá˝á áá¨ááť ááááľ áááááᢠá áá áľá áááŁáł áłáľáĽ áá
á á˝áá á ááĽáá áá á
áá¨áĽáťáŁ á áĽáá°áá
á áááľ á¨ááἠááá
á ááľáĽ UTF-8 á˛á áá á¨áááłáá á ááľ á°á¨á᪠á°áľ á¨ááá áľááľá áἠáááľ áĽáááááᢠá¨áá áŤáá áĽáá á¨ááŤáłá¨á á ááľ áá áŁá
᪠áááľ áŁááľ á°áĽá á˛áťá á¨ááĽáŠ áá á¨á°áŤáŤááľ á˘áľáľ á á°á¨áłáłá á áááĄá ááá áá á áĽááľ á˘áľ áááŤáŤá 10
ááá áá: 110xxxxx 10xxxxxx
. á áá
ááááŤáľ á¨ááá°áá áŁááľ áá
á°áá 6 á˘áľ á ááá áŽáľ ááľáĽ á˛ááľ (áááľá á˝ááá áá¨á°áłá) 10111111
â 10000000
), á¨ááŤá á¨ááááŞáŤá áŁááľ áĽáá˛á ááááŁá. âpâ á¨ááá áá°á á áŁááľ áĽáá°áááá˝ á°ááḠ0xD0 0xBF
, áĽá ááŁáŠ "r" á áľááľá áá 0xD1 0x80
. á á
áľá-á
áĽáŤ áá ááľáĽ, áá
á¨ááá
ááľááá ááááľ ááááľ áá¨ááá áŤááŁá - á ááľ áá
áľá á
áĽáŤ 0xD0
, áĽá áá á 0xD1
(ááá áĽááłá ááá á¨á˛áŞáá áá°áá˝ á ááá°áá áŁááľ áĽáť ááá°á አáá˝áá)á˘
áá á ááá
áá á á˝áá á˛áŤááĽáá, á¨ááłáá˝á á á˘áľ ááŤááľ ááááááľ áá°ááŠ, áĽá á á°ááłáłá áá á¨áŠááŽáľ á á ááá ááá á áá á á°áἠááá°ááá áá°ááŠ. áá¤áąá á¨UTF-C á˘ááŽá˛áá á áá¸áľ ("C" á á¨á°á áá), á á ááľ áŽáľ ááĽáĽ ᨠ3 áŁááľ áŤáá áá áĽá áĽá áá áĽáť áĽáá˛áŤáᥠáŤáľá˝áááłá áá á ááá á˘ááŽáľ ááľáá á ááľ á°á¨á᪠áŁááľ. áá á áĽá ASCII áŁááá áá°ááľ áá áĽáá°áá áŤá á˘ááŽá˛áá áá°ááá áááŤá 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 áŁááľ ááľáááá˘
á¨ááá¨áŞáŤáá áááł áŤáľááĄ
á áá áľá ááľááŽáš áŁá áŞáŤáľ áĽááľáĽ. áááá áááą áĽááá áá á á°ááłáłá áá°ááľ áá¸-áŁá áŞáŤáľ á¨á°áá áááľá áááá ᣠáĽá áá ááĽá ááá˝ á˝ááá˝á áĽáááľ ááᢠáá áá áá°ááľ á ááľ áá ááĽááľ áĽáŠ áá, á¨ááŤá á ááľáĄ áŤááá áá°á ááĽá áĽáť áá ááá. á áŠááŽáľ á áá á¨áĽ ááľáĽ á¨ááááá˝ ááá áľ áá¨áłáá áĽááá˘
á¨áá áĽáá°á°á áá°á, áŠááŽáľ á°á¨ááá á ááŽááá áĽáŤááłááłá¸á 65536 áŽáśá˝á˘ áá áá á áŁá á áá áááá á áá°áá (áá°á á˛á áĽáá°á°ááá¨á, áĽááá áá á áᎠá ááŽááá ááľáĽ áĽááááá). á¨á áá áľáŠá¨áľ á¨ááľá á á áá¨ááá ááᢠáĽááŽá˝á˘ áĽááá áááá˝ á¨á áá á áá áá ááááľ á áááŤá¸áá, áĽá á¨á áá áľááá áŤáá¸á áá¸á - áĽáá° á ááľ á°ááĽ, áĽáŤááłááłá¸á á¨á°ááłáłá áá°á ááááá˝á áŤáŁááŤá.
á¨á¤ááá áá°ááľ ááááá˝á á¨áŤá áĽááᢠáĽáá° á áááłá°á áá ᣠá áłáŞáŤá ááááŤáśá˝ ᣠáá
á áŁá áĽá
áĽá
áŤá áŤááá áá¸á፠ááłá áá - 96 ááááá˝ á 128 á¨áĽáá áŽáľ ááĽáŚá˝ áá á á°áá°ááá áááł á°á áłáľáááá˘
á¨áĽááŽá˝ á
áá áĽá áá ááťá¸á áá áá ᨠ16 áĽááśá˝ áá¸á - áá
á¨áá°á¨áá á ááá ááááťá¸áľ ááᢠá á°á¨ááŞá ᣠáĽá áĽááŽá˝ á¨ááááŠáľ áĽá á¨áá¨ááąáľ á 128 ááá 256 áĽááśá˝ á áá áĽá´áśá˝ áá - áááłá ᣠáá°á¨áłá á¨á˛áŞáá áá°áᾠᨠ256 áŁááľ áááľáłáᢠ0x0400
áá° 0x04FF
. áá
á áŁá ááš ááᥠá
áľá á
áĽáŤáá á áá´ áŤáľáááĽáá 0x04
, á¨ááŤá ááááá á¨á˛áŞáá ááá á á ááľ áŁááľ ááťá áá˝áá. áĽáááľ áá, á áá
ááááľ áá° ASCII (áĽá á á á ááá áá° áá ááááá áá¸-áŁá
áŞáŤáľ) áááááľ áĽáľáá áĽááŁáá. áľááá
áá
áá áĽáá°áááá-
- áááľ áŁááľ
10yyyyyy yxxxxxxx
ááĽá áŤáá ááááľ áĽáť á áá°ááyyyyyy yxxxxxxx
, áá á°áá áááἠá¨á áá áá°á ááyyyyyy y0000000
(áááľá á¨áľáá˝ ááá á¨áááľ á áľá°áá áááá á˘áľáľ áĽááľáłááłááᢠ7 á˘áľ); - á ááľ áŁááľ
0xxxxxxx
áá á¨á áá á¨áá°á áá áł áŁá ᪠ááᢠá á°á¨á 1 áá áŁáľáłááľáá ááŤáŤáť áá áá¨áá áĽáť áá á¨ááŤáľááááá˘áá°áá áŁááááá ááŤáŤáťá áᎠáááŁáľááá ᨠASCII áá á°áłááááľá á áľá áĽáááá˘
áĽáá˛áá 3 áŁááľ ááááá áŽáśá˝áĄ-
- áśáľáľ áŁááľ
110yyyyy yxxxxxxx xxxxxxxx
á¨ááĽá áá ááááľ áŤááááąyyyyyy yxxxxxxx xxxxxxxx
, ááἠá¨á áá áá°á ááyyyyyy y0000000 00000000
(á¨áłááážáš á áľá°áá áááá ááá á áľáłááľ 15 á˘áľ) áĽá á áá áŤááá áľá áłáĽá ááááľ áŤáľááá áľ á¨á á áááł (áá°áá áá° áááľ-áŁááľ á˛áááŠ, áá á áŁáá˛áŤ áĽáá°áá áĽááľááá¨ááá); - áááľ áŁááľ
0xxxxxxx xxxxxxxx
á á¨áĽá áááł á¨á áá áá°ááľ áŁá ᪠áá. á á°ááłáłáá á¨á°á¨á 1 ááᎠáŤáá ááŤáŤáť áá áĽáá¨áá¨áááᢠááŠááą á áá áááľ áŁááľ áĽáááŁáá (ááááŤáąá áá°áá áááł áľááá¨áá)á˘
áĽáŠ áááľááᥠá áá á¨á°ááłáłá áŁá 7-á˘áľ á¨áŠááŽáľ ááá ááááá˝á ááá°áľ á˛ááŁá ááááŞáŤ áá 1 á°á¨á᪠áŁááľ áĽá á á á ááá á ááľ áŁááľ á á ááľ ááá áĽáá áááá˘
á¨áá°ááľ áľáŞáśá˝ ááľáĽ á á ááą á ááľáŤáľ ááᢠááľáááá UTF-8á áááłáᣠááá áá á ááá ááťáťá áŤáá áľ áŚáł á áá˘
áá ááŁáľ? á ááááŞáŤáŁ á áľá áááł á ááᢠá¨á áá áá°á ááŤáŤáť áĽá á áááŤá˝ áłáĽá á¨á á áááł. áá á¨á áá áááľá ááᥠá áá á°ááłáłáŠ ááááá˝ á á°ááŤáŠ á ááśá˝ ááľáĽ á á°ááŤá¨ ááááľ áááᥠáá˝ááᢠááĄáľ ááĽá¨ááááá˝á ááááᣠáááłáᣠáá áá á¨áááľ ááľáĽ á ááľááŁáľáŁ áŁááľ á áááťá¸á áĽáť áłááá áá°á¨á á áá áľá˘ á ááá°á á°á¨á ᣠáá°áá áĽáá°áá¨áá ᣠá ASCII ááááá˝ á˘ááŽá˛áá ááĽá áá (áĽá áá á¨áá˛á áá°á áĽáť áłááá ᣠááá°áśá˝á á¨áᎠáá°á¨áłá áľááá°-ááĽáĽá áá) - áá°áá˝á áĽáá°áá áá° 0 áááἠááááá ᣠáááľá ᣠáĽáá°áá á°á¨á᪠áŁááľ (á¨ááŤá áá áá° ááá ááĽáŁá˝á áĽááááľ)á˘
á ááľ áá°á áĽáŠ áá, áááľ á¨á°áťá áá
á¨áá áá° á°ááášáľ áŚáľáą áľááá˝ á áľá á áĽáŤááťá˝áá á áĽááą áááá¨á áĽáááááĄ-
0xxxxxxx
- 1 áŁááľ á á°ááá°á áááł, 2 á á¨á
á áááł
11xxxxxx
- 1 áŁááľ
100xxxxx xxxxxxxx
- 2 áŁááľ
101xxxxx xxxxxxxx xxxxxxxx
- 3 áŁááľ
á áá á áááľ-áŁááľ áááἠááľáĽ á ááľ áŤáá° á¨ááá áľáá˝ á á - áĽáľá¨ áŽáľ ááĽáŚá˝ 0x1FFF
á áá°áá 0x3FFF
. ááá ᣠáĽáą á ááá á¨áľááĽ-áŁááľ UTF-8 áŽáśá˝ á¨á áá áľáá
áá ᣠá áŁá á¨á°áááą ááááá˝ á ááá ááŁáŁáá ᣠá áŁá á¨ááłá¨á áŞáłáŤ ááľáá
áá
á á˛áľ áŽáľ áááľá áá? 11xxxxxx
? áá
á¨64 ááááá˝ áá á áŤáá áľáá˝ âáľáłá˝â ááᣠáááá áá°áá˝áá áŤáááᣠáľááá
á¨áłáľ á ááŠáľ (á¨áłáľ) áá°áᢠá¨á ááá áá°ááľ áľáááá á¨á áŽáá áá°á ááŤá á¨áłáľ ááááᢠáááłáᣠá¨ASCII áá° á˛áŞáá ááá¨áá - áľáłá˝ á áá 64 ááááá˝á áááᢠá¨áá˛á áá°áᣠááĽáŽá˝áŁ áŚáł áĽá áŽá (á ASCII áŁááá á˝ááá˝ ááľáĽ á áŁá á°á°ááá ááľáá˘áŤáá˝)ᢠáá° ASCII ááááą - áĽá á¨á˛áŞáá áá°ááľ ááá ááá á¨áłáľ áááŤáľ ááááá˘
ááááľ áá°ááľ ááľáá áááŁá ᣠáá°ááľá áááá¨á á ááľá°á ááŞáá˝á á áá áá áĽá á˝ááá˝á ááľá°áááľ áĽáá˝ááá (áĽááá°-ááĽáĽ áĽááá áá áá° ASCII ááááľ áŤáľá¨áľáá ᣠáá á¨á፠á áá á¨á°á¨ááŞá áá°á áĽá ASCII áŤááá ááááá˝á áĽááááá ᣠáĽáá°áá ááá¨á).
áááťáĄ á¨áááľ áá°á á
áľá á
áĽáŤ 11xxxxxx
áĽá á¨ááááŞáŤ ááŤáŤáťáá áĽáá˛áá ááá¨áĽ 0xC0
ᨠCP1252 áá á¨áá á°áłááááľ áĽáááááᢠá áá á áááá˝áŁ á CP1252 ááľáĽ á¨á°áŤá°áą áĽá (ááá áá ááá á áá°áá) á¨áááŤáĽ á ááŽá á˝ááá˝ á UTF-C ááľáĽ á°ááłáłá ááááá˘
áĽáá
áá á ááľ á˝áá ááá áŤá-á¨ááá áá°á áĽáá´áľ á¨áłáľ ááááľ áĽáá°ááťá? á°ááłáłáŠá ááŤáŤáť áá°á áá˝áá ᣠáá - áᎠ- áĽáá
á¨áŠááŽáľ ááá
á ááľááá á áĽá áá áĽá¨á°áŤáá° ááᢠá áŁá áĽá áá á¨áá°á áá áł ááá ááá á áĽááłá ááááŞáŤ áá á áá°áá (áááłá, á¨áŠá˛áŤ áá á¨á°á "A" áŽáľ á áá. 0x0410
ááá áĽááłá á¨á˛áŞáá áĽááł á¨áááá¨á á 0x0400
). áľááá
á¨ááááŞáŤáášá 64 ááááá˝ áá° áľáłá˝ á¨áá°áľá á áá á¨áá°á á
áŤáąá ááá ááᣠáĽáá˝áááá˘
áá áá á˝áá ááááłáľáŁ á¨á°ááŤáŠ ááááá˝ áá á¨ááááą á ááłááľ áĽááŽá˝á á áĽá á áááŤáá áĽá á¨á¨áłáľ áá°ááľá á ááá ááľáĽ ááĽááą ááá˝áŠáá¸áᢠá¨áá˛á áá°áᣠáĽáá° ááŠáŁ á á á ááá áĽáá° á¤á64 á°áááŻáá˘
á¨áá¨á¨áť áááŞáá˝
á áá¨á¨áť áá ááá á¨áľ áĽáá°áááťá˝á áĽááľáĽá˘
á
áá¸áąá áἠáá á 101xxxxx xxxxxxxx xxxxxxxx
ááĽáŽá˝á áĽáľá¨ áŽáľ áĽáá˛áŤá°áá ááá
áľáááłá 0x1FFFFF
, áĽá áŠááŽáľ áá°á áĽá áŤá áá, á 0x10FFFF
. á áá á áááá, á¨áá¨á¨áťá áŽáľ ááĽáĽ áĽáá° ááá¨áá 10110000 11111111 11111111
. áľááá
, á¨ááááŞáŤá áŁááľ á
áš á¨áá áááľ áĽáá˝ááá 1011xxxx
(á¨áľ xxxx
á¨0 á áá) á¨ááŤá áá áááľ ááᢠáááłáᣠá á ááľ áŁááľ ááľáĽ áááá¨áŞáŤ á ááááľ á¨ááá ááá˝ 15 ááááá˝á áĽá፠áá¨á áľá˝ááá
ᣠáá á á°áᨠááááľ áá°ááá áá°ááŠá˘
á áá áśáľáľ áŁááľ á¨ááŤáľáááá¸áá á¨áŠááŽáľ áĽááŽá˝ áĽááᢠá áá á¨áą ᣠáá°á á˛á áĽáá°á°áááá ᣠáĽááá
á¨áťááá ááááá˝ áá¸á - áá á¨áĽááą áá áááááá ááá ááľá¨á á¨áŁáľ áá ᣠá¨áĽááá
ááľáĽ 21 áşá
á áᢠááá áá ááŤáá áĽá áŤáłáŤá áá°á፠á á¨áŠ - áĽá á¨á áá á áá áŤá áŤá
á áĽá á áá°áá á¨áááľ ááś áŤááąá˘ áĽá áááá˝á áľááľáłááľá ᣠáľááľ ááá á áśáá˝á á á (á áĽááἠá áŠááŽáľ ááľáĽ á áĽá áŚáłáá˝ á°á áłáľááá ᣠáá ááááš áĽááŽá˝ á ááá ááľáĽ áá¸á ᢠ0x1F300
- 0x1FBFF
). á áá á¨á ááŤáł á¨áŽáľ ááĽáŚá˝ á á ááľ áá á¨áá°á á°áĄ á˘áááá˝ áááŤá¸áá áŤá°áĄ (áááłáᣠáľááľ ááá ááľá)
áľááá ᣠá¨á˘ááᣠááŤáá áĽá áŤáłáŤá áá á¨ááááą áĽááľ á¨á°áá¨áĄ áááá˝á áĽááááŁááᣠáá° á ááľ ááŁáááľ áŤáá áááá áĽááááŁá¸ááá áĽá á¨áśáľáľ ááá áĽáá° áááľ áŁááľ áĽáááĽáŤá¸áááá˘
1011xxxx xxxxxxxx
áááĽáĄ á¨áá á¨á°á áá°á áľááľ ááá ááľá
á ááľ á°á¨á᪠á˝áá áááľá°áŤá¨á áĽáááá. áĽáá°áááľáłáá°á, áá á¨áłáá áá°á á áá á¨áą áá á¨áá°á 6 á˘áľáĽá á á áĽááŻá˝á ááľáĽ á¨áááľááá á áĽá á áĽáŤááłááą ááŁá á¨á˛áŽáľ ááááľ áŽáľ áá á¨áááŁá á
á áľ. á áĽáá ááľáĽ áŁá á¨áťááá áá°ááľ ááľáĽ 0x4E00
- 0x9FFF
áá
áľáá˝ 0 ááá 1 áá. áá
á áŁá ááš á áá°áá: á áĽááá
áááľ áĽá´áśá˝ ááŤá¨á áá°ááľá áŤáááá¨áĽ ááá¨á áŤáľááááá (áááľá áśáľáľ áŁááľ áááŁáľ). ááá áá á á¨áĽá áááł áá á¨áŽáą áĽáŤáą á áá áááłá á áá áá áŽáľ á¨áááľááá áá á¨ááááá˝ áĽááľ ááááľ áĽáá°ááá˝á áἠáá á (á¨áá á¨á°ááášáľ áá´áá˝ á áá áá
10240 áá) - á¨á፠á¨ááŽááááľ ááá áá° ááá¨áŤá. 0x2600
- 0x77FF
, áĽá á áá
áá᳠ᣠá áá
á á ááá ááá ááľáĽ ᣠá áŁá á áľáááá 6 á˘áľ (ᨠ21) áá áĽáŠá áááá 0. áľááá
ᣠá¨ááŽááááľ á
á°á á°á¨á°áá˝ á á ááľ áááŽááá áááľ áŁááľ áá ááá (ááá
áľáá
ááá á°áľáá áá) ᣠáŤá á¨áá°á ááá¨áŞáŤáá˝á ááá á.
á ááŤá áááľááá˝: SCSU, BOCU-1
á¨áŠááŽáľ áŁáááŤáá˝ á¨á˝ááá áááľ áŤáá ᥠá áá á ááĽáł á¨áŠááŽáľ áááááá˝ ááŤá¨á áĽááłá áááľáłááľ áá¸áŠáá
á áááááľ á áááľá: áľá ááááá á¨á°áááŠáľ ááłááŹá á ááťá á áĽáá á¨á°á áá አá áá ááᢠáľá ááłáŠ áá á¨á áአáŁáá áᎠááááŁáľ á¨áŤá´á á áŤááľ á¨ááá á ááá áľáá ፠áááťá áĽááá áá áá˘
á¨ááááá ááá SCSU áĽá á áŤá´ áŤááŁáá¸á ááłáŚá˝ áá á áŁá á°ááłáłá á¨áá ááłáŚá˝á áá áá áá (á¨"áá°á" á˝áá° ááłáĽ ááá "ááľáŽáśá˝á" áá ááá áĽá á¨áĽááą á¨á áá áááá)ᢠá á°ááłáłá áá áá á áááľ áĽáá˛á ááłáśá˝ á ááľ-á¨ááá ፠áľáá° áááŽá˝ ááá áľáá˝ á áἠááᢠá á°ááá, ááľáááą áĽá á¨áááá áá´áá˝á áá°áŁá, ááá áá á áŁá áĽáŠáá áĽáá´áľ áĽáá°áááἠá ááááá - ááá , á˘ááŽá°á á ááłááľ ááááľ áááŞáľá˛ááľ áá áá á áá áľ. áľááá ᣠáĽáŠ áá¸ááŤáá˝á á¨ááŤááᾠᨠSCSU á˘ááŽá°á á¨áĽá áľáá° ááá á¨á áá ááľáĽáľáĽ áĽá á¨áŁáľ ááááá˘
áááááá ᣠá á ááťáŤáááľ ááá ᨠSCSU áľáá áŤá áá° á፠áľááŞááľ á áľá°ááááŤáá - á áŽáľ áľáá˝ áá á á¨áĽá UTF-C áá áááłá°á á˝áá ᣠáá á á ááłááľ áááłáá˝ áá¤áą á á áľá á ááśáá˝ á¨ááá አá¨á¨á áá á (á ááłááľ áá áá áἠáá˝áá ᣠáá áĽá á áá°áá)ᢠáááłáᣠá¨ááĽáŤááľáĽ áĽá á¨ááŞá á˝ááá˝ á UTF-C á¨á°áá°á አáá¸áᢠᨠSCSU 60% á¨á°áťá (ááááŁáľá á á°á¨ááá áá°ááťá¸á ááááŤáľ ááá áá˝áá)á˘
á á°ááĽá ᣠᨠSCSU á á°á¨á᪠áŠááŽáľá áááá¨á áá ááááľ áĽááłá áĽá¨ááŤáá -
ááá á¨áá˝á ááťáťáŤáá˝
áŤáá¨áĽáŠáľ á áááŞáá á ááľá áááá°áá á áá°áá (áá ááááŁáľ ááŚáź á¨áŠááŽáľ áŽáá°áá˛á¨á ááŚá˝ á áŁá á¨áááŤáŠá áľ áá)ᢠáá°á áĽáŹ á¨ááá˝áŠáľ á áááááľ á¨á°áááá áá ááľ á°ááŁá áá (áĽá ááá á°áá᪠áááá áááľá á á áľá á áĽáŤ áá ááľáĽ áá¨áá¸áľ) áĽá á ááłááľ áŁá áŞáŤáą áááá˝ áľáŤáá˝ áááľáá áá˝ááᢠááá áá á°á¨áá á áááá á°á¨á᪠ááá áá˝áá - á¨ááááľá áá á ááľáá ááአá ááá ááľá°áŤá¨á áá˝ááá˘.
áááłáᣠááá˝ á áá ááááľ á¨áááľ áááá ááľáááľáŁ ááá á áᣠáŽáľ ááľá¨á áá˝áá - á°ááááŽá˝á áĽáť á áŤáááᢠoffs
, auxOffs
и is21Bit
á˘ááŽá°á áĽá á˛áŽá°á ááľáĽ. á áá
áááł á¨á ááľ áá°á ááááá˝á á
á°á á°á¨á°á áá¤áłá á áá ááááľ áá¸á á ááťáá, ááá áá ááá áĽááłá á ááľ ááá ááá áá á°ááłáłá ááá áááá á á°ááłáłá áŁááľ ááŤá ááľáľá ááá¨áá.
á á°á¨ááŞá ᣠááŁáŞáá áááł á ááá¨á á˘ááŽá°áŠá áá° á ááľ á¨á°áá°á ááá áá ááľ áá˝áá - áááłá ᣠá áŠá˛áŤ á˝ááá˝ áá á áá°áŽá ᣠááááŞáŤ áá á˘ááŽá°á áĽá á˛áŽá°á áŤáááᢠoffs = 0x0400
и auxOffs = 0
. áá
á á°áá á áá á áᣠáááłá á á°ááá¨á° ááááŤáłá áá. á á á ááá, áá
á¨áľáŽáá áľáááľ-á˘áľ á˘ááŽá˛áá á¨áá áá áá á°ááłáłá áááá, ááá áá áĽáá° á áľáááááą á¨ááá áŠááŽáľ ááááá˝á á¨ááľááŁáľ á˝ááłá áłáŤáľáááľ.
áá°á á˛á á¨á°á áá°á ááá áá°ááá á UTF-C ááľáĽ á á°ááá á áľáá
á˝áá ááľáĽ á¨áááá° áŁááľ á
áἠá¨áááá á¨ááá áľáá á áááááľ ááŁá ááááľ á¨ááᢠá¨áá¨á¨áťáá á¨áá¨áĄ 100 áŁááľ á¨á°áá¨á¨á ááľ ááľáĽ á ááľ ááá ááľá¨á á¨ááľá˝ááľá ááťáť ááŤáá áá˝ááᢠá˘ááŽá˛áá á¨áŁááĽá áááŁááľ áááἠááľáłááťáá˝á ááá¨áá¸áľ á¨á°áá°á á áá°áá, ááá áá á á á ááá áá
ááľá°áŤá¨á áá˝áá. áŁááľ 0xBF
áĽáá° ááááŞáŤ áŁááľ á ááá ááłá¨áľ á¨áá áľá (ááá áá ááá°áá ááá áŚáľá°áá ááá áá˝áá)ᢠáľááá
, á˘ááŽá˛áá á˛áŤá°áá, á
á°á á°á¨á°áá˝á ááľááŁáľ áá˝áá 0xBF 0xBF 0xBF
áĽáŤááłáṠᣠ10 áŞá˘ áá á - á¨á፠ᣠáľáá á áááá á¨ááá ᣠá°ááłáłá ááááľ áĽáľáŞáá áľá¨áľ á¨á°áá¨á áá ááŤá ááá°á˝ á á ááᢠá¨áá¨á¨áťáá á°á¨áľá 0xBF
á¨ááá ááááŞáŤ áĽáá°ááá á¨á°á¨ááá ááᢠ(á áááá˝ ááᣠáá
á¨áśáľáľ áŁááľ á
á°á á°á¨á°áᣠá áĽáááĽáŁ á˝á áááľ áŤáľááááá˘)
ááá ááá
áá á áĽáľáŤáá áŤáá áĽáᣠáĽááłá á°áľ áŤáá ! áĽáá° áĽá áľá áŠááŽáľ á áááá á á˛áľ ááá áĽáá°á°ááá (ááá á¨ááľáłááľ á˝ááłá á áĽáá°áłá°á°) á°áľá á á°ááááá˘
á¨ááłáŤ áá˝á˘ á¨ááĽáŤááľáĽ ááłá á¨áááąá UTF-8 áĽá SCSU áŤááľá áĽá
áá˝ áŤáłáŤáá˘
á¨áá á¨á°áááá áĽááľ á°á¨ááá˝á áĽáá° ááŁáľ á°á°áá ááá°áľ á áááŁáᢠááá áá, á á á ááá á áľáŤáŹ áá¤áľ á¨ááťáá, áľááá
á áĽááą á°áľá°á áá
á áá¨á¨áťá, UTF-C áĽá á áá á ááááŁá¸á ááłáŽá˝ áá áĽáá°áá áľáŠá¨áľ áĽá°áŁáá ááá áá á¨ááá:
- ááľááŽá˝á á á ááááľ áŤáá¸á (á¨100-200 ááááá˝)ᢠá áá á ááŁá áĽáá° á˛áááľ áŤá á¨áá¨áá፠áľáá° áááŽá˝á áľááá áá áá°áĽ á ááĽááľ.
- á¨ááŤáľáááá á¨áá ASCII ááá˝ááľáŁ áááľá ᣠá¨á°áá°á áŠáľ á á°á á°á¨á°áá˝ á ááá ááĽá¨ááá ááľáĽ á¨áá ᨠASCII áŽáśá˝á á áááŤá ááĽááľá á áľááá ááᢠá¨áśáľá°á ááá á¤áá ááá˝ áá á˛ááá (áááłá á¨áłáłá¤á áá á ááľáŤáľ) á¨á˘áŽá˛áá áá¤áąá áĽáá° á¨áá áŁááľ áľáĽáľáĽ áŤááᣠáĽá áĽáá° ááĽá¨ááááá˝ áŤááá áá áá á áľáááááľ ááľáá¨áľ ááťááᢠá áá áá፠áŤáá°á á á áľáááśá˝ ááŤááĽáááľ áá˝áá.
- á áááá° ááŤáŤáť (áááłá á¨ááľáአááá á˛ááł) á¨ááá áľáá áŽá˝á á ááĽááľ ááááľ á¨áááᢠáá áá ááľá¨á ááťáá, ááá áá á¨ááááŞáŤá ááľáá (ááá á ááľáá ááá áá á¨á°ááá¸áá ááťáťáŤ á áá°áá á) ááľááŠá á ááááľ áĽáť áá.
- á ááĽá¨ááááá˝ áááľ áá ááááá˝á á ááĽááľ áá¨ááá á¨ááá (áá°áá°á ᣠá ááľáŁá¸á áááľ ááĽá¨ááááá˝á áááá ᣠáŤááá)ᢠáá ááĽá¨ááááá˝ á ááááŞáŤ á˛áŽáľ áĽáá˛á°á¨á áááááᣠáľááá UTF-C á áĽááá á ááŁááá˝ á¨UTF-8 áááá áááá (áá á¨áááá፠áľáá° áááŽá˝ á¨á áá ááŁá)ᢠá°ááłáłáŠ ááĽá¨ááá ááááá á á°ááłáłá ááááľ á¨á°áá°á ᨠáľáááᣠá¨á˛áŽá˛áá áľáááá áá á á á áŤáľáááá áĽá á áŁááľ áŁááľ áá á¨áľ áá¨ááá áá˝ááá˘
ááá: á°á áááá˘
ááá: hab.com