בעיות עם עברית

tomashin

New member
בעיות עם עברית

שלום! יש לי קצת בעיות עם עברית בתוכנית שלי.. קודם כל כאשר אני רוצה להדפיס את הייצוג האסקי של אות בעברית אני מקבל מספר עם מינוס,למה זה קורה לי?האם זו בעיה של קידוד במחשב שלי או שבעולם לא חשבו עוד על ישראל? זה הקוד
#include<iostream.h> main() { cout<<(int)'ש'; return 0; }​
כמו שאתם רואים זה קוד פשוט מאוד.. אבל עם אנגלית המחשב מסתדר מצויין ורק עם עברית הוא עושה בעיות.. תודה לכל העוזר. יום נעים
 
שתי סיבות

למה אתה לא רואה עברית: 1. המרת את התו ל-INT. גם אם היית מנסה להציג תו באנגלית, היית מקבל את המספר שלו. אתה לא אמור להמיר ל-INT. אתה אמור להישאר ב-CHAR. 2.האפליקציה שלך היא אפליקציית CONSOLE של WINDOWS, נכון? היא לא אפליקציית DOS נקי ישן וטוב... פה נכנסים כבר לעניינים של הגדרות של מערכת ההפעלה. עד כמה שידוע לי, CONSOLE APPLICATIONS ב-WINDOWS 2000 או XP לא תומכות בפונטים אשר מסוגלים להציג אותיות בעברית, ואני גם לא מכיר דרך סטנדרטית להסביר למערכת ההפעלה שאתה מעוניין בפונטים כאלה עבור אפליקציות ה-CONSOLE שלך. זה גם לא יעזור את תשנה את ה-CODEPAGE בעזרת CHCP ל-1255 (ANSI HEBREW). יכול להיות שבגרסאות LOCALIZED (לא ENABLED) של מערכות הפעלה אלה (או קודמות), יש לך פונטים מתאימים. אני יודע שזה המצב במערכות הפעלה LOCALIZED ביפנית וסינית לדוגמה. עם מערכות הפעלה LOCALIZED בעברית אין לי נסיון, אבל שווה לך לבדוק. הערה: שמעתי שמועה לא מזמן שאפשר איכשהו לומר למערכת הפעלה ENABLED שתאפשר שימוש בפונטים בשפה המקומית עבור ה-CONSOLE, אבל לא בדקתי את העניין. גם אני אשמח לשמוע חידושים בעניין הזה...
 

tomashin

New member
אז ככה

ראשית תודה רבה על העזרה. ובקשר ל 1 אני המרתי את זה לINT בכדי לקבל את הקוד האסקי של התו. כמו שציינתי עם אני עושה למשל
cout<<(int)'a';​
יתן לי 97 כמו שצריך,אבל בעברית אם אני אנסה לעשות המרה אני אקבל מספר עם מינוס.וזה לא הגיוני כי הרי אמור לקבל מספר חיובי. 2)אכן כמו שאמרת אני עובד עם אפליקציית קונסול של ווינדוס ואני על windows xp .אם זה חשוב אני אציין שיש לי בעיות של עברית הפוכה במחשב אולי זה לא קשור לבעייה אבל שיהיה. במידה ואני אעבוד עם המהדר ++VC ייתכן ואני אראה עברית? השאלות שלי קשורות לאלוגריתם הכיווץ של הופמן ועברית כאן היא קריטית כי אני רוצה גם שאני יוכל לעשות מניפולציות גם על תוים מסוג זה. שוב תודה על ההתייחסות. יום נעים
 
אז תגיד ../images/Emo13.gif

חשבתי שאתה מנסה להציג בחלון ה-CONSOLE אותיות עבריות.... יש הבדל בין "לעשות מניפולציות" על תוים בעברית, לבין "להדפיס תוים בעברית" למסך! מה איכפת לך אם COUT מציג אותם איך שהוא מציג אותם??? מבחינתך, תתייחס אליהם כ-UNSIGNED CHAR וגמרנו. ברמת העיקרון, אתה יכול לגרום ל-COUT להדפיס ערך ASCII בין 0-255 ולא בין 128- ל-127 ע"י:
cout << (unsigned int)(unsigned char)'ש'​
או משהו כזה. ואין קשר בין סוג הקומפיילר שאתה עובד איתו לבין עניין ההצגה למסך בצורה מסויימת.
 
למעלה