CP437 – 8-bitowe kodowanie znaków stosowane w systemach operacyjnych MS-DOS, PC-DOS, DR-DOS i FreeDOS. Od czasu rozpowszechnienia się systemów operacyjnych Windows 3.x, a zwłaszcza Windows 95 i Windows NT 4.0, wykorzystujących kodowanie Windows-1252 i (w różnym stopniu) unikod, znaczenie kodowania CP437 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.

Zestaw znaków CP437 wygenerowany przez IBM PC

Historia

edytuj

Strona kodowa CP437 po raz pierwszy była użyta w pierwszej wersji systemu operacyjnego MS-DOS (1.0), wypuszczonego na rynek jako system operacyjny komputera domowego IBM PC, którego premiera miała miejsce 12 sierpnia 1981 r.

Zestaw znaków

edytuj

Kodowanie CP437 zostało zaprojektowane z myślą o użyciu na rynku amerykańskim, i choć zawiera 33 litery ze znakami diakrytycznymi, ich dobór robi wrażenie przypadkowego. Zestaw w całości pokrywa (oprócz rzecz jasna języka angielskiego) jedynie język niemiecki (znak 0xE1 pełni podwójną funkcję, i mimo położenia wśród liter greckich mapowany jest na unikod jako niemiecka litera „ostre s”).

Kody 0x00–0x1F oraz 0x7F mają podwójną funkcję: mogą pełnić rolę znaków sterujących, ale również mogą reprezentować znaki graficzne.

Braki znaków

edytuj

Kodowanie to nie zawiera znaków cudzysłowów stosowanych w typografii języka angielskiego ani niemieckiego.

Tablica kodów

edytuj
CP437
    x0     x1     x2     x3     x4     x5     x6     x7     x8     x9     xA     xB     xC     xD     xE     xF  
0x NULL
1x §
2x SP ! " # $ % & ' ( ) * + , - . /
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 ± ÷ ° · ² 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

Poniższa tabela przedstawia kody Unicode znaków zawartych w stronie kodowej CP437. Tabela zawiera wyłącznie znaki z górnego zakresu (dolny zakres, czyli pozycje 0x00–0x7F, jest identyczny z ASCII). Wszystkie kody podane jako szesnastkowe.

CP437
CP437 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 à 0x00E0 LATIN SMALL LETTER A WITH GRAVE
0x86 å 0x00E5 LATIN SMALL LETTER A WITH RING ABOVE
0x87 ç 0x00E7 LATIN SMALL LETTER C WITH CEDILLA
0x88 ê 0x00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 ë 0x00EB LATIN SMALL LETTER E WITH DIAERESIS
0x8A è 0x00E8 LATIN SMALL LETTER E WITH GRAVE
0x8B ï 0x00EF LATIN SMALL LETTER I WITH DIAERESIS
0x8C î 0x00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8D ì 0x00EC LATIN SMALL LETTER I WITH GRAVE
0x8E Ä 0x00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
0x8F Å 0x00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 É 0x00C9 LATIN CAPITAL LETTER E WITH ACUTE
0x91 æ 0x00E6 LATIN SMALL LIGATURE AE
0x92 Æ 0x00C6 LATIN CAPITAL LIGATURE AE
0x93 ô 0x00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 ö 0x00F6 LATIN SMALL LETTER O WITH DIAERESIS
0x95 ò 0x00F2 LATIN SMALL LETTER O WITH GRAVE
0x96 û 0x00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 ù 0x00F9 LATIN SMALL LETTER U WITH GRAVE
0x98 ÿ 0x00FF LATIN SMALL LETTER Y WITH DIAERESIS
0x99 Ö 0x00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
0x9A Ü 0x00DC LATIN CAPITAL LETTER U WITH DIAERESIS
0x9B ¢ 0x00A2 CENT SIGN
0x9C £ 0x00A3 POUND SIGN
0x9D ¥ 0x00A5 YEN SIGN
0x9E 0x20A7 PESETA SIGN
0x9F ƒ 0x0192 LATIN SMALL LETTER F WITH HOOK
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 ñ 0x00F1 LATIN SMALL LETTER N WITH TILDE
0xA5 Ñ 0x00D1 LATIN CAPITAL LETTER N WITH TILDE
0xA6 ª 0x00AA FEMININE ORDINAL INDICATOR
0xA7 º 0x00BA MASCULINE ORDINAL INDICATOR
0xA8 ¿ 0x00BF INVERTED QUESTION MARK
0xA9 0x2310 REVERSED NOT SIGN
0xAA ¬ 0x00AC NOT SIGN
0xAB ½ 0x00BD VULGAR FRACTION ONE HALF
0xAC ¼ 0x00BC VULGAR FRACTION ONE QUARTER
0xAD ¡ 0x00A1 INVERTED EXCLAMATION MARK
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 0x2561 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xB6 0x2562 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xB7 0x2556 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xB8 0x2555 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
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 0x255C BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xBE 0x255B BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
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 0x255E BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xC7 0x255F BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
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 0x2567 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xD0 0x2568 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xD1 0x2564 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xD2 0x2565 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xD3 0x2559 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xD4 0x2558 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xD5 0x2552 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xD6 0x2553 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xD7 0x256B BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xD8 0x256A BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
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 0x258C LEFT HALF BLOCK
0xDE 0x2590 RIGHT HALF BLOCK
0xDF 0x2580 UPPER HALF BLOCK
0xE0 α 0x03B1 GREEK SMALL LETTER ALPHA
0xE1 ß 0x00DF LATIN SMALL LETTER SHARP S
0xE2 Γ 0x0393 GREEK CAPITAL LETTER GAMMA
0xE3 π 0x03C0 GREEK SMALL LETTER PI
0xE4 Σ 0x03A3 GREEK CAPITAL LETTER SIGMA
0xE5 σ 0x03C3 GREEK SMALL LETTER SIGMA
0xE6 µ 0x00B5 MICRO SIGN
0xE7 τ 0x03C4 GREEK SMALL LETTER TAU
0xE8 Φ 0x03A6 GREEK CAPITAL LETTER PHI
0xE9 Θ 0x0398 GREEK CAPITAL LETTER THETA
0xEA Ω 0x03A9 GREEK CAPITAL LETTER OMEGA
0xEB δ 0x03B4 GREEK SMALL LETTER DELTA
0xEC 0x221E INFINITY
0xED φ 0x03C6 GREEK SMALL LETTER PHI
0xEE ε 0x03B5 GREEK SMALL LETTER EPSILON
0xEF 0x2229 INTERSECTION
0xF0 0x2261 IDENTICAL TO
0xF1 ± 0x00B1 PLUS-MINUS SIGN
0xF2 0x2265 GREATER-THAN OR EQUAL TO
0xF3 0x2264 LESS-THAN OR EQUAL TO
0xF4 0x2320 TOP HALF INTEGRAL
0xF5 0x2321 BOTTOM HALF INTEGRAL
0xF6 ÷ 0x00F7 DIVISION SIGN
0xF7 0x2248 ALMOST EQUAL TO
0xF8 ° 0x00B0 DEGREE SIGN
0xF9 0x2219 BULLET OPERATOR
0xFA · 0x00B7 MIDDLE DOT
0xFB 0x221A SQUARE ROOT
0xFC 0x207F SUPERSCRIPT LATIN SMALL LETTER N
0xFD ² 0x00B2 SUPERSCRIPT TWO
0xFE 0x25A0 BLACK SQUARE
0xFF NBSP 0x00A0 NO-BREAK SPACE

Różnice między kodowaniami MS-DOS CP437 a IBM CP437

edytuj
Pozycja MS-DOS CP437 IBM CP437
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
0xE6 0x00B5 MICRO SIGN (µ) 0x03BC GREEK SMALL LETTER MU (μ)

Objaśnienia:

Bibliografia

edytuj