שאלה בקשר לASCII

edddie

New member
שאלה בקשר לASCII

אני צריך טווח של מספרי האסקי שמסמל אותיות יפניות ושיעבוד בC(אם זה משנה בקומפיילר TCLITE)
 

selalerer

New member
ASCII בעייתי בהצגת מספר רב של שפות.

(באותו הזמן) היות וASCII מבוסס על byte לכל אות, יש לך רק 256 אפשרויות, מה שבד"כ אומר שיש לך מקום לשתי שפות, הראשונה חייבת להיות אנגלית (כי ASCII עד 127 זה סטנדרט קבוע) והשניה יכולה להיות מה שאתה רוצה, אבל הקומפיילר שאתה משתמש בו הוא קומפיילר לDOS, וDOS משתמש בטבלת הASCII שנמצאת בBIOS ולכן אתה תלוי במה רשום כרגע בBIOS שלך (בד"כ אותיות מזרח אירופאיות). אתה יכול כמובן להשתמש בפונט שאתה תעשה בעצמך ואז אתה יכול לקבוע אחרת, אבל זה קצת יותר עבודה. עוד אפשרות שאני יכול לחשוב עליה זה שאתה בטח מריץ תחת WINDOWS ואז אתה נמצא באמולטור של DOS ולא בDOS אמיתי, ואתה אולי יכול לקבוע את טבלת הASCII בה האמולטור של DOS ישתמש.
 

פרסאוס

New member
אין ascii שתומך ביפנית/סינית...

ממי שכבר עשה טעות אחת בתחום וכותב גם ליפנים. תשתמש רק ב unicode. בכלל רצוי להשתמש רק ב unicode אלא אם מש צריכים את המקום.
 

ברנדל

New member
אהלן

אפשר טיפה הרחבה?, איך עובדת לדוגמא מערכת הפעלה windows 95 בגירסה יפנית או סינית? האם כל המחרוזות שם הן ביוניקוד?
 

ברנדל

New member
ועוד משהו

שמעתי על כך שיש יוניקוד שעובד על ארבע בייט ולא שניים (נדמה לי שלגירסה אחת קוראים CS4 ולאכת CS2 משהו כזה) כי הסתבר שגם שניים לא מספיקים לכל השפות. אתה יודע על זה משהו?
 

DNile

New member
ב95,

השתמשו במנגנון שנקרא MBCS - משמע, MultiByte. מה שהיה, זה שהבית הראשון העיד האם דרוש בית נוסף כדי לייצג את התו, או שמא מספיק בית אחד. שיטה מסריחה, שאמנם הייתה חסכונית במקום אם מתעסקים במחרוזות באנגלית(שהיו unibyteיות), אבל מאוד מורכבת לטיפול, שכן אתה לא יכול להתקדם למשל לתו העשירי, מבלי להעריך קודם כל את כל תשעת התוים הראשונים, ולבדוק האם כל אחד הוא בית אחד או שניים(ולכן התו העשירי יכול להיות בכל מקום, בין הבית העשירי לבית ה19).
 

vinney

Well-known member
UTF8, UTF16 וUTF32

אלה שלושת הסטנדרטים אם אני זוכר נכון, טבלאות ה8 (ASCII) כלולות בתוך ה16 שכלולות בתוך ה32, כך שיש תמיכה אחורה. אם כבר הולכים על זה, עדיף להשתמש ב UTF32
 

ברנדל

New member
אתה טועה

השיטות שאמרת הן בכלל לא של יוניקוד הן של multibyte הן לא תופסות מספר קבוע של בייטים והן בממוצע חסכוניות יותר מיוניקוד לגבי מספר הבייטים במחרוזת. יוניקוד תופס תמיד אותו מס' של בייטים פר תו גרפי. יש סטנדרט ידוע של שני בייטים ליוניקוד , לאחרונה שמעתי על סטנדרט של 4 בייטים. מישהו יודע למה? שני הבייטים לא הספיקו? DNile באיזו גירסה של multibyte השתמשו ב 95 וב 98 עבור השפות האלה במערכת ההפעלה? האם פונקציות ה API שונות במערכת ההפעלה הזו , האם הן מצפות לקבל מחרוזות multibyte כדוגמת UTF8? ולא ANSI שמשמשת במע' ההפעלה האלו עבור שפות סטנדרטיות? יש לך אולי סימוכין?
 
למעלה