کد های اسکی چگونه کار می کنند؟
اسکی (ASCII) استانداردی برای نوشتن و نمایش دادن کاراکترهای انگلیسی به علاوه برخی از کاراکترهای رایج است.
کدگذاری نویسه چیست؟ قبل از آن که به سراغ بحث "اسکی (ASCII)" برویم، بهتر است با مفهوم کدگذاری نویسه یا Character Encoding آشنا شویم.
کدگذاری نویسه که به آن کدبندی نویسه، رمزنگاری نویسه و رمزنگاری نوشته نیز گفته میشود، نوعی قرارداد برای درک نوشته در تبادل اطلاعات است. با استفاده از یک کدگذاری نویسه، طرفین مبادله کننده داده یا نوشته میتوانند داده دریافتی خود را به صورت صحیح درک کنند.
برای درک بهتر رمزنگاری نویسه، دو نفر را فرض کنید که به زبانهای مختلف حرف میزنند.
حال درصورتی که این دو فرد به یکدیگر برسند، هیچ یک از طرفین سخن دیگری را نخواهد فهمید. برای حل این مشکل میتوان هر دو طرف را مجبور به یادگرفتن یک زبان واحد کرد. درحالی که هر دو میتوانند به زبان خود حرف بزنند، این امکان نیز بوجود میآید یه با استفاده از آن زبان واحد با یکدیگر نیز صحبت کنند.
بگذارید یک مثال عملی برای لزوم وجود یک کدگذاری نوشته بزنیم؛
فرض کنید دو کامپیوتر X و Y قرار است اطلاعاتی را رد و بدل کنند درحالی که هیچ یک از آنها از یک کدگذاری نویسه واحد پیروی نکنند درک اطلاعات در طرف دیگر غیرممکن خواهد بود.
مثلاً در کامپیوتر X حرف A برابر با ۰۰۰۱ حرف B برابر با ۰۰۱۰ و حرف C برابر با ۰۱۰۰ باشد. در کامپیوتر Y نیز حرف A برابر ۱۱۱۱ حرف B برابر ۱۱۱۰ و حرف C برابر ۱۱۰۰ باشد. در این صورت عبارت CAB در دو کامپیوتر با استفاده از بیتهای زیر شناخته خواهد شد: X: ۰۱۰۰۰۰۰۱۰۰۱۰ Y: ۱۱۰۰۱۱۱۱۱۱۱۰ بنابراین امکان درک دادهها ارسالی از طرف کامپیوتر X به Y در کامپیوتر Y غیرقابل فهم خواهد بود و برعکس.
اما درصورتی که این دو کامپیوتر از یک کدگذاری نویسه واحد استفاده کنند (حداقل در هنگام ارسال و دریافت دادهها)، این مشکل رفع خواهد شد.
فرض کنید در کدگذاری نویسه واحد حرف A برابر ۰۰۰۱ حرف B برابر ۱۱۱۱ و حرف C برابر ۱۰۱۰ باشد در این حالت عبارت CAB در هر دوی این کامپیوترها به شکل زیر خواهد بود:
X: ۱۰۱۰۰۰۰۱۱۱۱۱ Y: ۱۰۱۰۰۰۰۱۱۱۱۱ بنابراین هردو طرف میتوانند به صورت کاملاً صحیح اطلاعات دریافتی را درک کنند.
تاریخچه اسکی (ASCII) به گفته سایت ویکیدات (WikiDot)؛ ایده طراحی کاراکتر اینکدینگ اسکی (ASCII) در ماه مه سال ۱۹۶۱ توسط Bob Bemer به ANSI (مخفف American National Standards Institute به معنای "موسسه استانداردهای ملی آمریکا) فرستاده شد و در همان سال کمیتهای با عنوان X3.4 (که زیرگروه X3 بوده) به رهبری John Auwaerter به نمایندگی اکثر سازندگان تشکیل شده و به کار کردن روی این ایده مشغول شدند. گروه X3.4 بیش از دو سال بر روی این ایده کار کردند که بیشتر این مدت طی بحثهای بیهوده سپری شد و درنهایت در سال ۱۹۶۳ اسکی بوجود آمد.
در سال ۱۹۶۴ اولین سیستم عاملی که قرار بود توسط IBM با نام Operating System/360 از استاندارد ASCII استفاده کند به دلیل عدم تطابق کاراکتر ست ASCII با استاندارد پرینترها و دستگاههای پانچ (EBCDIC) کنسل شد.
به خاطر مشکلات موجود، اسکی تا سال ۱۹۸۱ بدون استفاده ماند و طی این مدت تنها کامپیوتر UNIVAC 1050 محصول IBM بود که از استاندارد اسکی استفاده میکرد تا اینکه در سال ۱۹۸۱ نیاز به اسکی بیشتر شد و کامپیوترها تا جایی که میتوانستند به این استاندارد مجهز شدند.
منبع تاریخچه اسکی: Wikidot.com اسکی (ASCII) چیست؟
کلمه اسکی (ASCII) مخفف عبارت "American Standard Code for Information Interchange" به معنای "استاندارد کدگذاری آمریکایی برای تبادل اطلاعات" بوده و تلفظ آن /ˈæski/ است.
اسکی یکی از کدبندیهای نوشته (Character Encoding) است که به وسیله آن طرفین مبادله کننده اطلاعات میتوانند به طور صحیح دادهها را دریافت و تشخیص بدهند.
به عبارت بهتر؛ ASCII نوعی قرارداد برای تشخیص نوشتههاست. کاراکتر ست اسکی خود به دو نوع تقسیم میشود. نوع ۷ بیتی که با نام اسکی استاندارد (Standard ASCII) شناخته شده و دارای ۲ به توان ۷ یعنی ۱۲۸ کاراکتر مختلف است که از ۰ تا ۱۲۷ استفاده میشوند. نوع دیگر آن حالت ۸ بیتی است که با نام اسکی توسعه یافته (Extended ASCII) شناخته شده و دارای ۲ به توان ۸ یعنی ۲۵۶ کاراکتر مختلف است که از ۰ تا ۲۵۵ استفاده میشود.
حالت توسعه یافته جدا از حالت استاندارد نیست بلکه از ۰ تا ۱۲۷ کاراکتر اول آن درست مانند حالت استاندارد بوده و فقط بقیه کاراکترها به بعد از آن (از ۱۲۸ تا ۲۵۵) اضافه شده است.
کاراکترهای اضافی دارای هیچ استانداردی نبوده و ممکن است در دستگاهها و کامپیوترهای مختلف فرق داشته باشد مثلاً در کامپیوتر X کاراکتر اسکی ۱۵۰ معادل حرف û و در کامپیوتر Y معادل حرف ب باشد اما کاراکترهای قبل از ۱۲۸ همگی ثابت هستند.
یکی از مواردی که در برنامهنویسی نیاز است، دانستن این است که کاربر چه کلیدی را فشرد؟ میدانید که با فشردن هر کلید روی کیبورد،یک کد که اصطلاحاً کد اسکی گفته میشود به سیستم عامل ارسال میشود. با دانستن آن کد میتوان فهمید که چه کلیدی فشرده شده است. کدهای اسکی کلیدهای مختلف را در ادامه ببیند: حروف و اعداد فارسی حروف و اعداد انگلیسی حروف و اعداد انگلیسی حروف و اعداد انگلیسی آ آ ا ا ب ب پ پ ت ت ث ث ج ج چ چ ح ح خ خ د د ذ ذ ر ر ز ز ژ ژ س س ش ش ص ص ض ض ط ط ظ ظ ع ع غ غ ف ف ق ق ک ک گ گ ل ل م م ن ن و و ه ه ی ی ئ ئ ٠ 0 ١ 1 ٢ 2 ٣ 3 ٤ 4 ٥ 5 ٦ 6 ٧ 7 ٨ 8 ٩ 9
Oem3 = 192
Oem4 = 219
Oem5 = 220
Oem6 = 221
Oem7 = 222
Oem8 = 223
OemBackslash = 226
OemClear = 254
OemCloseBrackets = 221
Oemcomma = 188
OemMinus = 189
OemOpenBrackets = 219
OemPeriod = 190
OemPipe = 220
Oemplus = 187
OemQuestion = 191
OemQuotes = 222
OemSemicolon = 186
Oemtilde = 192
P = 80
Pa1 = 253
Packet = 231
PageDown = 34
PageUp = 33
Pause = 19
Play = 250
Print = 42
PrintScreen = 44
Prior = 33
ProcessKey = 229
Q = 81
R = 82
RButton = 2
RControlKey = 163
Return = 13
Right = 39
RMenu = 165
RShiftKey = 161
RWin = 92
S = 83
Scroll = 145
Select = 41
SelectMedia = 181
Separator = 108
Shift = 65536
ShiftKey = 16
Sleep = 95
Snapshot = 44
Space = 32
Subtract = 109
T = 84
Tab = 9
U = 85
Up = 38
V = 86
VolumeDown = 174
VolumeMute = 173
VolumeUp = 175
W = 87
X = 88
l XButton1 = 5
XButton2 = 6
Y = 89
Z = 90
Zoom = 251
F5 = 116
F6 = 117
F7 = 118
F8 = 119
F9 = 120
FinalMode = 24
G = 71
H = 72
HanguelMode = 21
HangulMode = 21
Help = 47
Home = 36
I = 73
IMEAccept = 30
IMEAceept = 39
IMEConvert = 28
IMEModeChange = 31
IMENonconvert = 29
Insert = 45
J = 74
JunjaMode = 23
K = 75
KanaMode = 21
KanjiMode = 25
KeyCode = 65535
L = 76
LaunchApplication1 = 182
LaunchApplication2 = 183
LaunchMail = 180
LButton = 1
LControlKey = 162
Left = 37
LineFeed = 10
LMenu = 164
LShiftKey = 160
LWin = 91
M = 77
MButton = 4
MediaNextTrack = 176
MediaPlayPause = 179
MediaPreviousTrack = 177
MediaStop = 178
Menu = 18
Modifiers = 65536
Multiply = 106
N = 78
Next = 34
NoName = 252
None = 0
NumLock = 144
NumPad0 = 96
NumPad1 = 97
NumPad2 = 98
NumPad3 = 99
NumPad4 = 100
NumPad5 = 101
NumPad6 = 102
NumPad7 = 103
NumPad8 = 104
NumPad9 = 105
O = 79
Oem1 = 186
Oem102 = 226
Oem2 = 191
A = 65
Add = 107
Alt = 262144
Apps = 93
Attn = 264
B = 66
Back = 8
BrowserBack = 166
BrowserFavorites = 171
BrowserForward = 167
BrowserHome = 172
BrowserRefresh = 168
BrowserSearch = 170
BrowserStop = 169
C = 67
Cancel = 3
Capital = 20
CapsLock = 20
Clear = 12
Control = 131072
ControlKey = 17
Crsel = 247
D = 68
D0 = 48
D1 = 49
D2 = 50
D3 = 51
D4 = 52
D5 = 53
D6 = 54
D7 = 55
D8 = 56
D9 = 57
Decimal = 110
Delete = 46
Divide = 111
Down = 40
E = 69
End = 35
Enter = 13
EraseEof = 249
Escape = 27
Execute = 43
Exsel = 248
F = 70
F1 = 112
F10 = 121
F11 = 122
F12 = 123
F13 = 124
F14 = 125
F15 = 126
F16 = 127
F17 = 128
F18 = 129
F19 = 130
F2 = 113
F20 = 131
F21 = 132
F22 = 133
F23 = 134
F24 = 135
F3 = 114
F4 = 115