משהו מוזר לאללה

voguemaster

New member
משהו מוזר לאללה

חבר'ה אני מנסה להכניס לתוך DB מחרוזות בעברית. אני כותב ב-MFC את הדבר הספציפי הזה ומשתמש ב-MySQL בעזרת ספריה שנקראת ++MySQL. לספריה יש אובייקט Query שמשתמשים בו כך (בצורה הכי פשוטה):
Query q = conn.query(); // where conn is a Connection object q << "SELECT * FROM table"; // an example query q.store(); // execute this simple query​
עכשיו, ביצעתי שאילתת INSERT טיפוסית והכנסתי לשם מחרוזת בעברית בתור הערך של השדה. לא השתמשתי ב- T_ ושום דבר כזה אלא ישירות כמו בדוגמא שהבאתי. אח"כ כשעשיתי SELECT בחזרה לראות מה יצא, זה נתן לי את המילה בעברית כמו שהיא צריכה להיות, למרות שבאופן פנימי האובייקטים שמייצגים את המידע שמוחזר (ה-ResultSet כמו שאומרים) הם מבוססי char רגיל לגמרי! יש למישהו איזשהו מושג איך זה מצליח ????????? יש להם אובייקט Row שמחזיר ColData שמייצר מידע של column אחד. יש לו אופרטור שמחזיר מחרוזת ופשוט השתמשתי בו כדי לבנות CString ואז להציג אותה עם MessageBoxW. מדהים. משהו קסום קרה פה ואין לי מושג מה
 

DadleFish

New member
עברית קיימת גם ב-ASCII

הרי בסה"כ העברת ל-MySQL מספרים : 128, 134, 142 וכו'. במחשב שלך הייצוג של התווים האלו הוא עברית; במחשבים אחרים לא. בגלל זה צריך UNICODE. עברית הייתה הרבה לפני שהיה UNICODE - פשוט לא יכולת לעשות I18N לתוכנות שלך בצורה קלה, והיו שפות (קאנג'י היפנית למשל) שפשוט לא היה מספיק מקום עבור האותיות שלהן.
 

voguemaster

New member
הבעיה היא כזו

הספריה הזו כנראה לא תומכת בשום דבר שהוא לא CHAR רגיל (אולי יש מצב להשתמש ב-template classes שלהם לייצור ColData שמחזיק unsigned short במקום char) ויש בעיה גדולה יותר, ה-DB בגרסתו הנוכחית לא תומך ב-UNICODE. אני אהיה מעוצבן אם במחשב אחר (אפילו חלונות) זה לא יעבוד כמו שצריך.
 

DadleFish

New member
באסה

התוכנה תעבוד על כל מחשב שבו ה-ASCII הבסיסי מכיל עברית ולא לטינית.
 
למעלה