PDA

View Full Version : كد اسكي



javad.software
چهارشنبه 11 اردیبهشت 1387, 09:45 صبح
سلام
با نوشتن يه حلقه for ميشه كد اسكي حروف انگليسي و علائم مختلف رو بدست اورد ولي حروف فارسي چي؟
اصلا حروف فارسي كد اسكي دارن؟يعني مثل حرف A كه كد اسكيش 65 واسه حروف فارسي هم وجود داره؟

pars.engineer
چهارشنبه 11 اردیبهشت 1387, 12:50 عصر
کد اسکی(ASCII) یک استاندارد جهانی برای نسبت دادن اعداد به کارکترهاست که یک بایت می باشد لذا توانایی ذخیره 127 کارکتر متفاوت را دارد که این 127 کارکتر عبارتند از حروف کوچک و بزرگ انگلیسی اعداد 0 الی 9 و تعدادی علایم خاص مثل / و # و & و ...، پس بدیهی است که نه تنها شامل حروف فارسی بلکه شامل حروف هیچ زبان دیگری نمی شود.
یونیکد (Unicode) استاندارد دیگری برای نسبت دادن اعداد به کارکترهاست که شامل 2 بایت می باشد و کارکترهای زبان فارسی و اکثر زبانهای زنده دنیا را شامل می شود.

همانطور كه مثلا براي نسبت دادن كاركتر A به يك متغير Char مي توان از كد زير استفاده كرد:




char ch;
ch=65;


براي نسبت دادن كاركتر ب به يك متغير كاركتر بايد از كد زير استفاده كرد:


char ch;
ch="\xFE91";

لازم به ذكر است كه روش دوم (نسبت دادن يونيكد به كاركتر Char در بسياري از كامپايلرهاي زبان C كه تحت كنسول هستند ساپورت نمي شود) و بيشتر در زبان هاي Visual به كار مي رود مثل Visual C++.

MRHagh
چهارشنبه 11 اردیبهشت 1387, 14:05 عصر
کد اسکی (American Standard Code for Information Interchang ) یک استاندار آمریکایی برای کدگذاری داده هاست . همانطور که دوستمون هم اشاره فرمودند , یک بایتی است و توانایی کدگذاری 256 نوع داده مختلف را دارد نه 128 تا ! این 256 کد به 3 دسته تقسیم میشود :
1.کدهای کنترلی از صفر تا 31
2.کدهای استاندار صفحه کلید از 32 تا 127
3.کدهای توسعه یافته از 128 تا 255
کدهای تو سعه یافته یا EBSDIC برای کدگذاری نمادهایی هستند که بعدا اضافه میشوند , مانند حروف زبانهای دیگر غیر از انگلیسی که علائمی بیشتر دارند و میتوانند از این قسمت استفاده کنند .بنابراین حروف فارسی هم کد اسکی دارند.
اما یونیکد ... یونی‌کد به هر نویسه یک عدد یکتا اختصاص می‌دهد،مستقل از محیط،مستقل از برنامه،و مستقل از زبان. تا قبل از اختراع یونی‌کد، صدها سیستم کُدگذاری مختلف برای تخصیصکد به نمادها وجود داشت. این سیستم‌های کدگذاری با هم تعارض نیز داشتند. یعنی دو کُدگذاری مختلف ممکن بود از اعداد یکسانی برای دو نویسهٔ مختلف، یا از اعداد مختلفی برای نویسه‌های یکسان استفاده کنند. با وجود این که هر کامپیوتری (بالاخص کارگزارهای شبکه) لازم است از کُدگذاری‌های مختلف و متعددی پشتیبانی کند، هرگاه داده‌ها از کُدگذاری‌ها یا محیط‌های مختلف عبور کنند، در معرض خطر تحریف قرار می‌گیرند.یونی‌کد در بسیاری از سیستم‌عامل‌ها، همهٔ مرورگرهای امروزی، و بسیاری از محصولات دیگر پشتیبانی می‌شود. یونی‌کد این امکان را فراهم می‌کند که یک محصول نرم‌افزاری واحد یا یک وب‌گاه واحد بتواند بدون نیاز به طراحی و مهندسی مجدد، در محیط‌ها، زبان‌ها، و کشورهای متعددی کار کند. یونی‌کد به داده‌ها نیز امکان می‌دهد که بدون تحریف از سیستم‌های مختلف عبور داده شوند.
برای یافتن کدهای یونیکد زبان فارسی و استفاده از آنها و حتی کد جملات فارسی , میتوانید از لینک زیر استفاده کنید :
http://bahmanane.persiangig.ir/program/persian/Persian_To_Unicode.htm
موفق باشید ...

Nima_NF
چهارشنبه 11 اردیبهشت 1387, 17:03 عصر
در ادامه توضیحات دوستان ، برای استفاده از یونیکد به جای char باید از نوع داده ای wchar_t استفاده کرد که در سیستم عامل هایی که یونیکد پشتیبانی می کنند و توسط تمامی کامپایلرهای دهه اخیر پشتیبانی می شود که در برخی از کامپایلر ها نیز علائم خاصی قبل از نوشته یونیکد نیاز می باشد:



wchar_t *str = L"unicode text";

pars.engineer
چهارشنبه 11 اردیبهشت 1387, 20:55 عصر
دوستمون درست مي گن يك بايت مي تواند شامل 256 كاركتر مختلف باشد.
ولي كد اسكي كه شناخته شده است شامل 127 كاركتر اصلي است، و بقيه فضا به عنوان Extended ASCII Code شناخته مي شود. كه شامل يكسري كاركتر خاص مثل حروف يوناني است.

javad.software
پنج شنبه 12 اردیبهشت 1387, 09:18 صبح
با تشكر از دوستان و پاسخگويي سريع اونها
ايا در زبان ++c يونيكد ساپورت ميشه؟و براي بدست اوردن كد اسكي حروف فارسي در ++c چكار ميشه كرد؟

PC2st
پنج شنبه 12 اردیبهشت 1387, 10:39 صبح
ايا در زبان ++c يونيكد ساپورت ميشه؟و براي بدست اوردن كد اسكي حروف فارسي در ++c چكار ميشه كرد؟
همونطور که جناب Nima_NF اشاره کردن، نوع کاراکتر یونیکد هم هست، بجای char از wchar_t باید استفاده بشه و همچنین قبل از کاراکتر یک حرف L اضافه بشه و برای گرفتن کدش، باید اون رو به عدد (مثلا int) تبدیل کرد:


wchar_t ucod = L'س';
int codi = ( int )ucod;


پی نوشت: فایلی که حاوی کدهاست باید بصورت UTF-8 ذخیره بشه.