CP852

Z Wikipedii, wolnej encyklopedii

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:

Bibliografia[edytuj | edytuj kod]