بیت هشتم
چاپگرهای راه دور (teleprinter) و بورس از فرستادن ۷ بیت از اطلاعات به یکدیگر کاملاً راضی بودند اما ریز پردازندههای نوظهور در ۱۹۷۰ ترجیح میدادند تا با توانهای ۲ کار کنند. آنها میتوانستند در یک زمان ۸ بیت را پردازش کنند و ۸ بیت (یک بایت byte یا octed [گروه هشت تایی]) را برای ذخیره هر کاراکتر مورد استفاده قرار دهند که ۲۵۶ مقدار ممکن در دسترس خواهد بود.
یک کاراکتر ۸ بیتی میتواند یک عدد را تا ۲۵۵ ذخیره کند اما ASCII تنها تا ۱۲۷ را اختصاص میدهد. مقادیر دیگر از ۱۲۸ تا ۲۵۵ یدکی هستند. در ابتدا PCهای IBM از مقادیر یدکی برای نمایش حروف ویژه استرسدار (accented letters)، نمادها و اشکال مختلف و تعدادی از حروف یونانی استفاده میکرد. به عنوان مثال عدد ۲۰۰ گوشه پایین سمت چپ یک جعبه بود: ╚، و ۲۴۴ حرف آلفای یونانی به صورت کوچک بود: α. به این روش رمزگذاری حروف نام code page 437 داده شد.
با این حال بر خلاف ASCII کاراکترهای ۱۲۸ تا ۲۵۵ هرگز به صورت استاندارد درنیامدند و کشورهای مختلف مقادیر یدکی را با الفبای خودشان شروع میکردند. همه بر سر اینکه ۲۲۴ باید α را نشان دهد توافق نداشتند حتی یونانیان. این منجر به ایجاد تعدادی صفحات کد (code page) جدید شده است. به عنوان مثال در کامپیوترهای IBM روسیه با استفاده از code page 885، عدد ۲۲۴ حرف Я را نشان میدهد. در code page 737 یونانی نشان دهنده امگای کوچک: ω است.
حتی پس از آن نیز اختلاف نظر وجود داشت. از ۱۹۸۰ ویندوز مایکروسافت کد پیجهای خاص خود را معرفی کرد. در کد پیج سیریلیک (Cyrillic) Windows-1251، عدد ۲۲۴ حرف a سیریلیک را نشان میدهد و Я، ۲۲۳ است.
در اواخر ۱۹۹۰ تلاشی در جهت استانداردسازی شکل گرفت. پانزده مجموعه کاراکتری ۸ بیتی مختلف برای پوشش دادن الفباهای گوناگون مانند سیریلیک، عربی، عبری، ترکی و تایلندی شکل گرفت. آنها ISO-8859-1 تا ISO-8859-16 نامیده شدند (برای شماره ۱۲ هیچ مجموعه کاراکتری قرار داده نشده). در ISO-8859-5 سیریلیک، ۲۲۴ حرف p و ۲۰۷، Я را نشان میدهد.
بنابراین اگر یک دوست روسی سندی را برای شما بفرستد، شما در واقع نیاز دارید که بدانید از چه کد پیجی استفاده شده است. سند به خودی خود یک توالی از اعداد است. کاراکتر ۲۲۴ میتواند Я، a یا p باشد. سند با کد پیج اشتباه، شبیه یک دسته از حروف و علائم بهم ریخته دیده میشود.
خودتان آن را امتحان کنید
کد پیجها به عنوان مجموعههای کاراکتری (character sets) شناخته میشوند. میتوانید خودتان این مجموعههای کاراکتری را امتحان کنید اما باید از PHP یا یک زبان سمت سرور شبیه آن استفاده کنید (بطور کلی به این دلیل که کاراکتر نیاز دارد قبل از اینکه به مرورگر برسد در صفحه باشد). این خطوط را در یک فایل PHP ذخیره کرده و آن را به سرورتان آپلود کنید:
1
2
3
4
5
6
7
8
9
|
<html>
<head>
<meta charset="ISO-8859-5">
</head>
<body>
<style type="text/css">p {float: left; padding: 0 15px; margin: 0; font-size: 80%;}</style>
<?php for ($i=0; $i<256; $i++) echo ($i%32?'':'<p>') . $i . ': ' . chr ($i) . '<br>'; ?>
</body>
</html>
|
کد بالا جدولی شبیه این را نمایش میدهد:

مجموعه کاراکتری سیریلیک ISO-8858-5 که در فایرفاکس به نمایش در آمده
تابع chr
در PHP کاری شبیه به همان تابع String.fromCharCode
را در جاوا اسکریپت انجام میدهد. برای مثال chr(224)
عدد ۲۲۴ را قبل از ارسال آن به مرورگر در صفحه وب، قرار میدهد. چنانکه قبلاً دیدیم ۲۲۴ میتواند به معنای چیزهای مختلفی باشد. بنابراین مرورگر نیاز دارد که بداند از کدام مجموعه کاراکتری برای نمایش ۲۲۴ استفاده کند. این چیزی است که در خط سوم کد بالا مشخص شده است. این خط به مرورگر میگوید که از مجموعه کاراکتری سیریلیک ISO-8858-5 استفاده کند:
1
|
<meta charset="ISO-8859-5">
|
اگر خط مربوط به مشخص کردن charset
را قرار ندهید، صفحه با استفاده از پیش فرض مرورگر به نمایش درمیآید. در کشورهای با الفبای مبتنی بر لاتین (مانند انگلستان و ایالات متحده) احتمالاً پیش فرض ISO-8859-1 است که در این صورت ۲۲۴: à است.
این وضعیت در حدود ۱۹۹۰ است. اسناد در بسیاری از زبانها میتوانند نوشته شده، ذخیره یا رد و بدل شوند اما باید بدانید که از کدام مجموعه کاراکتری در آنها استفاده شده است. همچنین هیچ راه سادهای برای استفاده دو یا بیشتر از دو الفبای غیر انگلیسی در همان سند وجود ندارد، و الفباهایی با بیشتر از ۲۵۶ کاراکتر مثل چینی و ژاپنی مجبور به استفاده از سیستمهای کاملاً متفاوتی هستند.
در نهایت اینترنت در حال ظهور است. بین المللی و جهانی شدن، این مسأله را بسیار بزرگتر مینماید. یک استاندارد جدید لازم است.