بسم الله الرحمن الرحیم
کدبندی نویسه (به انگلیسی: Character encoding) سیستمی است که هر نویسه را به چیز دیگری مانند الگویی از بیتها، دنبالهای از اعداد طبیعی، هشت بیت متوالی (بایت) یا پالسهای الکتریکی مربوط میکند تا بتوان دادهها را که متشکل از متن و اعداد هستند، ذخیره کرد یا توسط شبکههای ارتباطی منتقل کرد.
مثالهای معروف برای کدبندی نویسهها شامل کد مورس، کد اسکی و یونیکد میشود.
کد مورس در سال ۱۸۴۰ میلادی ابداع شد. این کد هر حرف الفبای انگلیسی و رقمهای صفر تا نه را به دنبالهای از فشرده شدن کوتاه و بلند کلید تلگراف کدبندی میکرد.
اسکی که در سال ۱۹۶۰ تا ۱۹۶۳ تالیف شد، یک جدول کدبندی ۷بیتی است که اعداد، حروف، نمادها و نویسههای کنترلی را به وسیله اعداد صحیح به کدهای با طول ثابت کدبندی میکند.
کدبندی EBCDIC که توسط شرکت آی بی ام در سال 1963 معرفی شد، یک جدول کدبندی ۸بیتی است.
محدودیتهای جدولهای اینچنینی به سرعت مشخص شد و چندین روش تک منظوره به کار گرفته شدند تا آنها را گسترش دهند. پشتیبانی از دستگاههای نوشتاری بیشتر برای زبانهای مختلف از جمله زبانهای شرق آسیا مانند چینی و کرهای، نیازمند پشتیبانی از نویسههای بسیار بیشتری بود و استفاده از روش منظم تری برای کدبندی ضروری بود.
برای فهم اینکه کدگذاری حروف چگونه کار میکند یک مثال ساده شروع میکنیم؛ اعداد ۱ تا ۲۶ را برای حروف الفبای انگلیسی در نظر بگیرید. با کنار هم قرار دادن اعداد «۱۵ ۱۲ ۱۲ ۵ ۸» یک پیام کدگذاری شده ساده خواهید داشت که نمایانگر کلمه «hello» است.
مشخص است که برای دریافت همه اجزای زبان انگلیسی (شامل حروف بزرگ و کوچک، اعداد و علائم) به بیش از ۲۶ عدد نیاز است. به همین دلیل «کد استاندارد آمریکایی برای تبادل اطلاعات» (American Standard Code for Information Interchange, ASCII)، به عنوان اولین استاندارد برای رمزگذاری کاراکترها ابداع شد.
«مؤسسه استانداردهای ملی آمریکا» (American National Standards Institute, ANSI) در ۶ اکتبر ۱۹۶۰ شروع به کار بر روی «اسکی» (ASCII) کرد. طرح اولیه این کدگذاری به صورت ۵ بیتی در کدهای تلگرافی داشت و توسط «امیلی بادوت» (Emile baudot) ابداع شد. اما در پایان کمیته طراح تصمیم به استفاده از کد ۷ بیتی گرفت.
۷ بیت امکان کدگذاری از ۱۲۸ کاراکتر را میدهد. با توجه به اینکه کاراکترهای انگلیسی فقط به ۱۲۸ عدد نیاز داشتند، استفاده از ۷ بیت به معنی به حداقل رساندن هزینه انتقال این دادههاست. (برعکس ۸ بیت)
۳۲ کاراکتر اول اسکی برای کاراکترهای کنترلی استفاده میشود. این کاراکترها برای انتقال دستورالعملهای خاصی به دستگاههای دیگر مثل پرینتر مورد استفاده قرار میگیرد. برای مثال کاربر میتواند یک خط را ... کند، یک کاراکتر را حذف کند و در برخی دستگاهها مثل «تله تایپ مدل ۳۳» (TeleType model 33) زنگ را به صدا درآورد.
انجمن استاندارد آمریکا اولین نسخه اسکی را در سال ۱۹۶۳ منتشر کرد و در سال ۱۹۶۷ اصلاح نمود. آخرین بهروزرسانی اصلی در سال ۱۹۸۶ بود. اسکی اولین بار برای استفاده تجاری در شبکه مخابرات آمریکا دیده شد.
در ۱۱ مارچ ۱۹۶۸، رئیسجمهور وقت آمریکا «لیندون بی. جانسون» (Lyndon B. Johnson) دستور داد باید همه کامپوترهای «دولت فدرال آمریکا» استاندارد اسکی را پشتیبانی کنند. به این ترتیب جایگاه اسکی در تاریخ کامپیوتر آمریکا محکم شد.
طرحهای کدگذاری دیگری نظیر «الفبای بینالمللی تلگراف نسخه ۲» (International Telegraph alphabet No.2, ITA2) در آن زمان وجود داشت ولی اسکی به سرعت به استاندارد اصلی زبان انگلیسی تبدیل شد. اسکی رایجترین نوع کدگذاری بود، تا اینکه در سال ۲۰۰۷ «یو. تی. اف. ۸» (UTF-8) از آن پیشی گرفت.
برای تشخیص مقدار اسکی یک کاراکتر، رایجترین روش جستجو در جدول اسکی است. جدول اسکی هر کاراکتر را به مقدار مشخصی بین ۰ تا ۱۲۷ ربط میدهد.
کاراکترهای کنترلی ۳۲ خط اول جدول را به خود اختصاص میدهند. این کاراکترها چاپ نمیشوند، در عوض برای ارسال یک دستور به دستگاههای دیگر نظیر پرینتر استفاده میشود. سیستم 8 تایی که در جدول بالا آورده شده است برای سیستمهای قدیمی استفاده شده و به نوعی منسوخ است.
ده دهی | دو دویی | 8تایی | 16تایی | کاراکتر | توضیحات |
---|---|---|---|---|---|
0 | 0000 0000 | 000 | 00 | NUL | خالی |
1 | 0000 0001 | 001 | 01 | SOH | شروع سرتیتر |
2 | 0000 0010 | 002 | 02 | STX | شروع متن |
3 | 0000 0011 | 003 | 03 | ETX | پایان متن |
4 | 0000 0100 | 004 | 04 | EOT | پایان ارسال |
5 | 0000 0101 | 005 | 05 | ENQ | جستجو |
6 | 0000 0110 | 006 | 06 | ACK | تایید شد |
7 | 0000 0111 | 007 | 07 | BEL | زنگ |
8 | 0000 1000 | 010 | 08 | BS | پسبرد |
9 | 0000 1001 | 011 | 09 | TAB | فاصله افقی |
10 | 0000 1010 | 012 | 0A | LF | خط جدید |
11 | 0000 1011 | 013 | 0B | VT | فاصله عمودی |
12 | 0000 1100 | 014 | 0C | FF | صفحه جدید |
13 | 0000 1101 | 015 | 0D | CR | بازگشت محموله |
14 | 0000 1110 | 016 | 0E | SO | بیرون آوردن |
15 | 0000 1111 | 017 | 0F | SI | داخل کردن |
16 | 0001 0000 | 020 | 10 | DLE | خروج از داده ها |
17 | 0001 0001 | 021 | 11 | DC1 | کنترل 1 دستگاه |
18 | 0001 0010 | 022 | 12 | DC2 | کنترل 2 دستگاه |
19 | 0001 0011 | 023 | 13 | DC3 | کنترل 3 دستگاه |
20 | 0001 0100 | 024 | 14 | DC4 | کنترل 4 دستگاه |
21 | 0001 0101 | 025 | 15 | NAK | تایید نشده |
22 | 0001 0110 | 026 | 16 | SYN | synchronous idle |
23 | 0001 0111 | 027 | 17 | ETB | پایان بلوک انتقال |
24 | 0001 1000 | 030 | 18 | CAN | لغو |
25 | 0001 1001 | 031 | 19 | EM | پایان رسانه |
26 | 0001 1010 | 032 | 1A | SUB | جایگزینی |
27 | 0001 1011 | 033 | 1B | ESC | خروج |
28 | 0001 1100 | 034 | 1C | FS | جداکننده فایل |
29 | 0001 1101 | 035 | 1D | GS | جداکننده گروهی |
30 | 0001 1110 | 036 | 1E | RS | جداکننده ضبط |
31 | 0001 1111 | 037 | 1F | US | جداکننده واحد |
127 | 0111 1111 | 177 | 7F | DEL | پاک کردن |
95 کاراکتر قابل چاپ در اسکی وجود دارند. توجه کنید که فاصله هم یک کاراکتر محسوب میشود.
ده دهی | دو دویی | 8تایی | 16تایی | کاراکتر |
---|---|---|---|---|
32 | 0010 0000 | 040 | 20 | فاصله |
33 | 0010 0001 | 041 | 21 | ! |
34 | 0010 0010 | 042 | 22 | " |
35 | 0010 0011 | 043 | 23 | # |
36 | 0010 0100 | 044 | 24 | $ |
37 | 0010 0101 | 045 | 25 | % |
38 | 0010 0110 | 046 | 26 | & |
39 | 0010 0111 | 047 | 27 | ' |
40 | 0010 1000 | 050 | 28 | ( |
41 | 0010 1001 | 051 | 29 | ) |
42 | 0010 1010 | 052 | 2A | * |
43 | 0010 1011 | 053 | 2B | + |
44 | 0010 1100 | 054 | 2C | , |
45 | 0010 1101 | 055 | 2D | - |
46 | 0010 1110 | 056 | 2E | . |
47 | 0010 1111 | 057 | 2F | / |
48 | 0011 0000 | 060 | 30 | 0 |
49 | 0011 0001 | 061 | 31 | 1 |
50 | 0011 0010 | 062 | 32 | 2 |
51 | 0011 0011 | 063 | 33 | 3 |
52 | 0011 0100 | 064 | 34 | 4 |
53 | 0011 0101 | 065 | 35 | 5 |
54 | 0011 0110 | 066 | 36 | 6 |
55 | 0011 0111 | 067 | 37 | 7 |
56 | 0011 1000 | 070 | 38 | 8 |
57 | 0011 1001 | 071 | 39 | 9 |
58 | 0011 1010 | 072 | 3A | : |
59 | 0011 1011 | 073 | 3B | ; |
60 | 0011 1100 | 074 | 3C | < |
61 | 0011 1101 | 075 | 3D | = |
62 | 0011 1110 | 076 | 3E | > |
63 | 0011 1111 | 077 | 3F | ? |
64 | 0100 0000 | 100 | 40 | @ |
65 | 0100 0001 | 101 | 41 | A |
66 | 0100 0010 | 102 | 42 | B |
67 | 0100 0011 | 103 | 43 | C |
68 | 0100 0100 | 104 | 44 | D |
69 | 0100 0101 | 105 | 45 | E |
70 | 0100 0110 | 106 | 46 | F |
71 | 0100 0111 | 107 | 47 | G |
72 | 0100 1000 | 110 | 48 | H |
73 | 0100 1001 | 111 | 49 | I |
74 | 0100 1010 | 112 | 4A | J |
75 | 0100 1011 | 113 | 4B | K |
76 | 0100 1100 | 114 | 4C | L |
77 | 0100 1101 | 115 | 4D | M |
78 | 0100 1110 | 116 | 4E | N |
79 | 0100 1111 | 117 | 4F | O |
80 | 0101 0000 | 120 | 50 | P |
81 | 0101 0001 | 121 | 51 | Q |
82 | 0101 0010 | 122 | 52 | R |
83 | 0101 0011 | 123 | 53 | S |
84 | 0101 0100 | 124 | 54 | T |
85 | 0101 0101 | 125 | 55 | U |
86 | 0101 0110 | 126 | 56 | V |
87 | 0101 0111 | 127 | 57 | W |
88 | 0101 1000 | 130 | 58 | X |
89 | 0101 1001 | 131 | 59 | Y |
90 | 0101 1010 | 132 | 5A | Z |
91 | 0101 1011 | 133 | 5B | [ |
92 | 0101 1100 | 134 | 5C | |
93 | 0101 1101 | 135 | 5D | ] |
94 | 0101 1110 | 136 | 5E | ^ |
95 | 0101 1111 | 137 | 5F | _ |
96 | 0110 0000 | 140 | 60 | ` |
97 | 0110 0001 | 141 | 61 | a |
98 | 0110 0010 | 142 | 62 | b |
99 | 0110 0011 | 143 | 63 | c |
100 | 0110 0100 | 144 | 64 | d |
101 | 0110 0101 | 145 | 65 | e |
102 | 0110 0110 | 146 | 66 | f |
103 | 0110 0111 | 147 | 67 | g |
104 | 0110 1000 | 150 | 68 | h |
105 | 0110 1001 | 151 | 69 | i |
106 | 0110 1010 | 152 | 6A | j |
107 | 0110 1011 | 153 | 6B | k |
108 | 0110 1100 | 154 | 6C | l |
109 | 0110 1101 | 155 | 6D | m |
110 | 0110 1110 | 156 | 6E | n |
111 | 0110 1111 | 157 | 6F | o |
112 | 0111 0000 | 160 | 70 | p |
113 | 0111 0001 | 161 | 71 | q |
114 | 0111 0010 | 162 | 72 | r |
115 | 0111 0011 | 163 | 73 | s |
116 | 0111 0100 | 164 | 74 | t |
117 | 0111 0101 | 165 | 75 | u |
118 | 0111 0110 | 166 | 76 | v |
119 | 0111 0111 | 167 | 77 | w |
120 | 0111 1000 | 170 | 78 | x |
121 | 0111 1001 | 171 | 79 | y |
122 | 0111 1010 | 172 | 7A | z |
123 | 0111 1011 | 173 | 7B | { |
124 | 0111 1100 | 174 | 7C | | |
125 | 0111 1101 | 175 | 7D | } |
126 | 0111 1110 | 176 | 7E | ~ |