CP852
CP852 (Code page 852, CP 852, IBM 852, OEM 852, MS-DOS Latin 2, PC Latin 2, Slavic (Latin II)) – 8-bitowe kodowanie znaków stosowane w systemach operacyjnych MS-DOS, PC-DOS, DR-DOS i FreeDOS, w zamyśle mające zawierać znaki języków krajów Europy Wschodniej opartych na alfabecie łacińskim. Analogicznie jak w przypadku kodowania CP850, niektóre litery ze znakami diakrytycznymi zastąpiły niektóre istniejące w CP437 znaki semigrafiki i symbole matematyczne. Od czasu rozpowszechnienia się systemów operacyjnych Windows 3.x, a zwłaszcza Windows 95 i Windows NT 4.0, wykorzystujących kodowanie Windows-1250 i (w różnym stopniu) unikod, znaczenie kodowania CP852 zaczęło bardzo szybko maleć, choć nadal jest ono wykorzystywane w aplikacjach pisanych dla systemu operacyjnego DOS lub nieposiadających interfejsu graficznego (przeznaczonych do uruchamiania w oknie DOS względnie oknie konsoli), w tym programach księgowych, magazynowych itp.
Historia
[edytuj | edytuj kod]Strona kodowa CP852 po raz pierwszy pojawiła się w systemie MS-DOS w wersji 5.0, wydanej we wrześniu 1991 r.
Zestaw znaków
[edytuj | edytuj kod]Kodowanie CP852 zawiera litery ze znakami diakrytycznymi używane w następujących językach: albańskim, białoruskim (Łacinka), bośniackim, chorwackim, czeskim, irlandzkim, dolno- i górnołużyckim, niemieckim, polskim, rumuńskim (patrz poniżej), słowackim, słoweńskim, turkmeńskim i węgierskim.
Kodowanie to zostało zaprojektowane z myślą o możliwie najpełniejszym pokryciu języków dawnego bloku sowieckiego używających alfabetu łacińskiego. Wbrew jednej z nazw (kodowanie języków słowiańskich) zawiera litery używane w języku albańskim (należącym do grupy języków ilirskich), niemieckim (należącym do grupy języków germańskich), językiem rumuńskim (należącym do grupy języków romańskich) i węgierskim (należącym do grupy języków ugrofińskich), a nie pozwala na użycie z językami opartymi na cyrylicy. Nie zawiera wszystkich znaków używanych w poprawnej typografii języka rumuńskiego.
Braki znaków
[edytuj | edytuj kod]Kodowanie CP852 nie zawiera cudzysłowów używanych w typografii języków obsługiwanych przez to kodowanie (np. stosowanych w Polsce «„» i «”»). Brak również czterech znaków używanych w języku rumuńskim, pisanych z przecinkiem pod spodem:
- 0x0218 LATIN CAPITAL LETTER S WITH COMMA BELOW
- 0x0219 LATIN SMALL LETTER S WITH COMMA BELOW
- 0x021A LATIN CAPITAL LETTER T WITH COMMA BELOW
- 0x021B LATIN SMALL LETTER T WITH COMMA BELOW.
Przyjęto, że będą stosowane analogiczne litery z cedillą:
- 0x015E LATIN CAPITAL LETTER S WITH CEDILLA
- 0x015F LATIN SMALL LETTER S WITH CEDILLA
- 0x0162 LATIN CAPITAL LETTER T WITH CEDILLA
- 0x0163 LATIN SMALL LETTER T WITH CEDILLA
W czasach projektowania kodowania CP852 uznawano, że przecinek pod spodem jest typograficzną odmianą cedilli, nie osobnym znakiem diakrytycznym.
Tablica kodów
[edytuj | edytuj kod]CP852 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
0x | NULL | ☺ | ☻ | ♥ | ♦ | ♣ | ♠ | • | ◘ | ○ | ◙ | ♂ | ♀ | ♪ | ♫ | ☼ |
1x | ► | ◄ | ↕ | ‼ | ¶ | § | ▬ | ↨ | ↑ | ↓ | → | ← | ∟ | ↔ | ▲ | ▼ |
2x | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | Przecinek, | - | . | / |
3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
6x | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | ⌂ |
8x | Ç | ü | é | â | ä | ů | ć | ç | ł | ë | Ő | ő | î | Ź | Ä | Ć |
9x | É | Ĺ | ĺ | ô | ö | Ľ | ľ | Ś | ś | Ö | Ü | Ť | ť | Ł | × | č |
Ax | á | í | ó | ú | Ą | ą | Ž | ž | Ę | ę | ¬ | ź | Č | ş | « | » |
Bx | ░ | ▒ | ▓ | │ | ┤ | Á | Â | Ě | Ş | ╣ | ║ | ╗ | ╝ | Ż | ż | ┐ |
Cx | └ | ┴ | ┬ | ├ | ─ | ┼ | Ă | ă | ╚ | ╔ | ╩ | ╦ | ╠ | ═ | ╬ | ¤ |
Dx | đ | Đ | Ď | Ë | ď | Ň | Í | Î | ě | ┘ | ┌ | █ | ▄ | Ţ | Ů | ▀ |
Ex | Ó | ß | Ô | Ń | ń | ň | Š | š | Ŕ | Ú | ŕ | Ű | ý | Ý | ţ | ´ |
Fx | SHY | ˝ | ˛ | ˇ | ˘ | § | ÷ | ¸ | ° | ¨ | ˙ | ű | Ř | ř | ■ | NBSP |
znaki posiadają podwójną funkcję: mogą pełnić rolę znaków sterujących, ale również mogą reprezentować znaki graficzne
Mapowanie na unikod
[edytuj | edytuj kod]Poniższa tabela przedstawia kody Unicode znaków zawartych w stronie kodowej CP852. Tabela zawiera wyłącznie znaki z górnego zakresu (dolny zakres, czyli pozycje 0x00 ÷ 0x7F jest identyczny z ASCII. Wszystkie kody podane jako szesnastkowe.
CP852 | |||
---|---|---|---|
CP852 | Znak | Unicode | Nazwa znaku |
0x80 | Ç | 0x00C7 | LATIN CAPITAL LETTER C WITH CEDILLA |
0x81 | ü | 0x00FC | LATIN SMALL LETTER U WITH DIAERESIS |
0x82 | é | 0x00E9 | LATIN SMALL LETTER E WITH ACUTE |
0x83 | â | 0x00E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX |
0x84 | ä | 0x00E4 | LATIN SMALL LETTER A WITH DIAERESIS |
0x85 | ů | 0x016F | LATIN SMALL LETTER U WITH RING ABOVE |
0x86 | ć | 0x0107 | LATIN SMALL LETTER C WITH ACUTE |
0x87 | ç | 0x00E7 | LATIN SMALL LETTER C WITH CEDILLA |
0x88 | ł | 0x0142 | LATIN SMALL LETTER L WITH STROKE |
0x89 | ë | 0x00EB | LATIN SMALL LETTER E WITH DIAERESIS |
0x8A | Ő | 0x0150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE |
0x8B | ő | 0x0151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE |
0x8C | î | 0x00EE | LATIN SMALL LETTER I WITH CIRCUMFLEX |
0x8D | Ź | 0x0179 | LATIN CAPITAL LETTER Z WITH ACUTE |
0x8E | Ä | 0x00C4 | LATIN CAPITAL LETTER A WITH DIAERESIS |
0x8F | Ć | 0x0106 | LATIN CAPITAL LETTER C WITH ACUTE |
0x90 | É | 0x00C9 | LATIN CAPITAL LETTER E WITH ACUTE |
0x91 | Ĺ | 0x0139 | LATIN CAPITAL LETTER L WITH ACUTE |
0x92 | ĺ | 0x013A | LATIN SMALL LETTER L WITH ACUTE |
0x93 | ô | 0x00F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX |
0x94 | ö | 0x00F6 | LATIN SMALL LETTER O WITH DIAERESIS |
0x95 | Ľ | 0x013D | LATIN CAPITAL LETTER L WITH CARON |
0x96 | ľ | 0x013E | LATIN SMALL LETTER L WITH CARON |
0x97 | Ś | 0x015A | LATIN CAPITAL LETTER S WITH ACUTE |
0x98 | ś | 0x015B | LATIN SMALL LETTER S WITH ACUTE |
0x99 | Ö | 0x00D6 | LATIN CAPITAL LETTER O WITH DIAERESIS |
0x9A | Ü | 0x00DC | LATIN CAPITAL LETTER U WITH DIAERESIS |
0x9B | Ť | 0x0164 | LATIN CAPITAL LETTER T WITH CARON |
0x9C | ť | 0x0165 | LATIN SMALL LETTER T WITH CARON |
0x9D | Ł | 0x0141 | LATIN CAPITAL LETTER L WITH STROKE |
0x9E | × | 0x00D7 | MULTIPLICATION SIGN |
0x9F | č | 0x010D | LATIN SMALL LETTER C WITH CARON |
0xA0 | á | 0x00E1 | LATIN SMALL LETTER A WITH ACUTE |
0xA1 | í | 0x00ED | LATIN SMALL LETTER I WITH ACUTE |
0xA2 | ó | 0x00F3 | LATIN SMALL LETTER O WITH ACUTE |
0xA3 | ú | 0x00FA | LATIN SMALL LETTER U WITH ACUTE |
0xA4 | Ą | 0x0104 | LATIN CAPITAL LETTER A WITH OGONEK |
0xA5 | ą | 0x0105 | LATIN SMALL LETTER A WITH OGONEK |
0xA6 | Ž | 0x017D | LATIN CAPITAL LETTER Z WITH CARON |
0xA7 | ž | 0x017E | LATIN SMALL LETTER Z WITH CARON |
0xA8 | Ę | 0x0118 | LATIN CAPITAL LETTER E WITH OGONEK |
0xA9 | ę | 0x0119 | LATIN SMALL LETTER E WITH OGONEK |
0xAA | ¬ | 0x00AC | NOT SIGN |
0xAB | ź | 0x017A | LATIN SMALL LETTER Z WITH ACUTE |
0xAC | Č | 0x010C | LATIN CAPITAL LETTER C WITH CARON |
0xAD | ş | 0x015F | LATIN SMALL LETTER S WITH CEDILLA |
0xAE | « | 0x00AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK |
0xAF | » | 0x00BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK |
0xB0 | ░ | 0x2591 | LIGHT SHADE |
0xB1 | ▒ | 0x2592 | MEDIUM SHADE |
0xB2 | ▓ | 0x2593 | DARK SHADE |
0xB3 | │ | 0x2502 | BOX DRAWINGS LIGHT VERTICAL |
0xB4 | ┤ | 0x2524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT |
0xB5 | Á | 0x00C1 | LATIN CAPITAL LETTER A WITH ACUTE |
0xB6 | Â | 0x00C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX |
0xB7 | Ě | 0x011A | LATIN CAPITAL LETTER E WITH CARON |
0xB8 | Ş | 0x015E | LATIN CAPITAL LETTER S WITH CEDILLA |
0xB9 | ╣ | 0x2563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT |
0xBA | ║ | 0x2551 | BOX DRAWINGS DOUBLE VERTICAL |
0xBB | ╗ | 0x2557 | BOX DRAWINGS DOUBLE DOWN AND LEFT |
0xBC | ╝ | 0x255D | BOX DRAWINGS DOUBLE UP AND LEFT |
0xBD | Ż | 0x017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE |
0xBE | ż | 0x017C | LATIN SMALL LETTER Z WITH DOT ABOVE |
0xBF | ┐ | 0x2510 | BOX DRAWINGS LIGHT DOWN AND LEFT |
0xC0 | └ | 0x2514 | BOX DRAWINGS LIGHT UP AND RIGHT |
0xC1 | ┴ | 0x2534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL |
0xC2 | ┬ | 0x252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL |
0xC3 | ├ | 0x251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT |
0xC4 | ─ | 0x2500 | BOX DRAWINGS LIGHT HORIZONTAL |
0xC5 | ┼ | 0x253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL |
0xC6 | Ă | 0x0102 | LATIN CAPITAL LETTER A WITH BREVE |
0xC7 | ă | 0x0103 | LATIN SMALL LETTER A WITH BREVE |
0xC8 | ╚ | 0x255A | BOX DRAWINGS DOUBLE UP AND RIGHT |
0xC9 | ╔ | 0x2554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT |
0xCA | ╩ | 0x2569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL |
0xCB | ╦ | 0x2566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL |
0xCC | ╠ | 0x2560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT |
0xCD | ═ | 0x2550 | BOX DRAWINGS DOUBLE HORIZONTAL |
0xCE | ╬ | 0x256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL |
0xCF | ¤ | 0x00A4 | CURRENCY SIGN |
0xD0 | đ | 0x0111 | LATIN SMALL LETTER D WITH STROKE |
0xD1 | Đ | 0x0110 | LATIN CAPITAL LETTER D WITH STROKE |
0xD2 | Ď | 0x010E | LATIN CAPITAL LETTER D WITH CARON |
0xD3 | Ë | 0x00CB | LATIN CAPITAL LETTER E WITH DIAERESIS |
0xD4 | ď | 0x010F | LATIN SMALL LETTER D WITH CARON |
0xD5 | Ň | 0x0147 | LATIN CAPITAL LETTER N WITH CARON |
0xD6 | Í | 0x00CD | LATIN CAPITAL LETTER I WITH ACUTE |
0xD7 | Î | 0x00CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX |
0xD8 | ě | 0x011B | LATIN SMALL LETTER E WITH CARON |
0xD9 | ┘ | 0x2518 | BOX DRAWINGS LIGHT UP AND LEFT |
0xDA | ┌ | 0x250C | BOX DRAWINGS LIGHT DOWN AND RIGHT |
0xDB | █ | 0x2588 | FULL BLOCK |
0xDC | ▄ | 0x2584 | LOWER HALF BLOCK |
0xDD | Ţ | 0x0162 | LATIN CAPITAL LETTER T WITH CEDILLA |
0xDE | Ů | 0x016E | LATIN CAPITAL LETTER U WITH RING ABOVE |
0xDF | ▀ | 0x2580 | UPPER HALF BLOCK |
0xE0 | Ó | 0x00D3 | LATIN CAPITAL LETTER O WITH ACUTE |
0xE1 | ß | 0x00DF | LATIN SMALL LETTER SHARP S |
0xE2 | Ô | 0x00D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX |
0xE3 | Ń | 0x0143 | LATIN CAPITAL LETTER N WITH ACUTE |
0xE4 | ń | 0x0144 | LATIN SMALL LETTER N WITH ACUTE |
0xE5 | ň | 0x0148 | LATIN SMALL LETTER N WITH CARON |
0xE6 | Š | 0x0160 | LATIN CAPITAL LETTER S WITH CARON |
0xE7 | š | 0x0161 | LATIN SMALL LETTER S WITH CARON |
0xE8 | Ŕ | 0x0154 | LATIN CAPITAL LETTER R WITH ACUTE |
0xE9 | Ú | 0x00DA | LATIN CAPITAL LETTER U WITH ACUTE |
0xEA | ŕ | 0x0155 | LATIN SMALL LETTER R WITH ACUTE |
0xEB | Ű | 0x0170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE |
0xEC | ý | 0x00FD | LATIN SMALL LETTER Y WITH ACUTE |
0xED | Ý | 0x00DD | LATIN CAPITAL LETTER Y WITH ACUTE |
0xEE | ţ | 0x0163 | LATIN SMALL LETTER T WITH CEDILLA |
0xEF | ´ | 0x00B4 | ACUTE ACCENT |
0xF0 | SHY | 0x00AD | SOFT HYPHEN |
0xF1 | ˝ | 0x02DD | DOUBLE ACUTE ACCENT |
0xF2 | ˛ | 0x02DB | OGONEK |
0xF3 | ˇ | 0x02C7 | CARON |
0xF4 | ˘ | 0x02D8 | BREVE |
0xF5 | § | 0x00A7 | SECTION SIGN |
0xF6 | ÷ | 0x00F7 | DIVISION SIGN |
0xF7 | ¸ | 0x00B8 | CEDILLA |
0xF8 | ° | 0x00B0 | DEGREE SIGN |
0xF9 | ¨ | 0x00A8 | DIAERESIS |
0xFA | ˙ | 0x02D9 | DOT ABOVE |
0xFB | ű | 0x0171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE |
0xFC | Ř | 0x0158 | LATIN CAPITAL LETTER R WITH CARON |
0xFD | ř | 0x0159 | LATIN SMALL LETTER R WITH CARON |
0xFE | ■ | 0x25A0 | BLACK SQUARE |
0xFF | NBSP | 0x00A0 | NO-BREAK SPACE |
Rozmieszczenie polskich znaków
[edytuj | edytuj kod]CP852 | |||||
---|---|---|---|---|---|
Małe litery: | |||||
ą | 0xA5 | ł | 0x88 | ś | 0x98 |
ć | 0x86 | ń | 0xE4 | ź | 0xAB |
ę | 0xA9 | ó | 0xA2 | ż | 0xBE |
Wielkie litery: | |||||
Ą | 0xA4 | Ł | 0x9D | Ś | 0x97 |
Ć | 0x8F | Ń | 0xE3 | Ź | 0x8D |
Ę | 0xA8 | Ó | 0xE0 | Ż | 0xBD |
Znaki diakrytyczne: | |||||
kreska | 0xEF | ogonek | 0xF2 | kropka | 0xFA |
Różnice między kodowaniami MS-DOS CP852 a IBM CP852
[edytuj | edytuj kod]Pozycja | MS-DOS CP852 | IBM CP852 | ||
---|---|---|---|---|
Kod Unicode znaku | Nazwa znaku | Kod Unicode znaku | Nazwa znaku | |
0x1A | 0x001A | SUBSTITUTE | 0x001C | FILE SEPARATOR |
0x1C | 0x001C | FILE SEPARATOR | 0x007F | DELETE |
0x7F | 0x007F | DELETE | 0x001A | SUBSTITUTE |
0xAA | 0x00AC | NOT SIGN (¬) | NZ |
Objaśnienia:
- pozycje na fioletowym tle są znakami kontrolnymi
- NZ oznacza znak niezdefiniowany