שלח תשובה

זירת השאלות

642
צפיות
24
תשובות

אני מאבדת עברית בהכנסה לבסיס נתונים

,‏ 13 בנובמבר, 2004

אני בונה אתר בASP שמכניס נתונים לבסיס נתונים של ACCESS. האתר מציג עברית ללא בעיה.

הבעיה היא שחומרים שמוכנסים לבסיס הנתונים מאבדים את character encoding ונראים כמו יוונית בתוך בסיס הנתונים ומוצגים למשתמש בסימני שאלה.

(השתמשתי ב –
Session.CodePage=1255;
וגם בכל עמוד
<%@LANGUAGE=JScript @CodePage="1255" %>
וגם
<META HTTP-EQUIV="Content-Type"  CONTENT="text/html; CHARSET=windows-1255">)


מה אני יכולה לעשות כדי לשמור על ה-character encoding כשאני מכניסה מידע לבסיס הנתונים?


תגיות:

24 תשובות

  1. god הגיב:

    גם לי יש בעיה דומה, אבל גיליתי משהו
    זה אולי מפריע לך שאת מסתכלת על הבסיס נתונים…
    אבל כאשר את משתמשת בהם בתור משתנים התוכן שלהם למשל את כותבת "נורית" נשאר "נורית" גם אם הוא נראה כמו גיבריש.. ואם את עושה RESPONSE.WRITE זה מראה נורית ולא סימנים.

  2. mirileh הגיב:

    response write לא עוזר אצלי
    זה נותן לי סימני שאלה

  3. זהר פלד הגיב:

    איזה גרסא של אקסס?
    על איזה מחשב יושב השרת, בחו"ל או בארץ?
    מה מוגדר ב local אנגלית או עברית?

  4. זהר פלד הגיב:

    ב FAQ כבר ביקרת?
    ניסית לא להשתמש ב codepage בכלל?

    ולמה שאלתי אותך שלוש שאלות וקיבלתי תשובה רק על אחת?

  5. mirileh הגיב:

    סליחה, פספסתי את שתי השאלות בפנים –
    אז ככה –

    המחשב הוא שרת בחו"ל, באתר http://www.brinkster.com, עם סרבר –
    Windows 2003 Webservers. יש להניח שהשפה היא אנגלית (אין לי גישה לשרת).

    מסיבה זו אני חייבת codepage, אחרת אני מאבדת את כל סוגי העברית.

    אגב אם אני מכניסה מידע לבסיס נתונים על המחשב שלי ואז מעבירה את בסיס הנתונים לאתר – המידע מוצג נכון בעברית. הבעיה היא עם מידע שמוכנס לבסיס הנתונים דרך האתר.

  6. god הגיב:

    אממ עוד שאלונת קטנה בשבילך עם איזה
    עורך את משתמש? 1stpage?

  7. ניר טייב הגיב:

    אני מניח שעבור ASP הוא משתמש
    בעורך Edit Plus כמו רבים אחרים. (אני מביניהם )

  8. mirileh הגיב:

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

  9. mirileh הגיב:

    גיליתי מה הבעיה –
    במקרה שלי היה מדובר בדפים שלא רק הכניסו נתונים לבסיס הנתונים אלא גם העלו קובץ והקומפוננטה שהעלה לי את הקובץ דפק לי את העברית.

    אז אם יקרה לכם דבר דומה (למרות ששמתם את כל הטגים הנכונים) – תתחילו לבדוק קומפוננטות .

  10. זהר פלד הגיב:

    קודם כל מזל טוב…
    דבר שני, על איזה רכיב מדובר?
    ודבר שלישי, איך פתרת את הבעיה?

    לרוב הקומפוננטות שמטפלות גם בטקסט יש איזה שהיא שיטה לבצע encoding, לדוגמא ב CDONTS יש מתודה שנקראת setLocalid או משהו בסגנון, אני לא זוכר בדיוק כרגע…

  11. mirileh הגיב:

    זה ASPUpload
    ובאמת יש שם אפשרות לקבוע את השפה. פשוט לקח לי זמן לזהות שזו הבעיה .

  12. mirileh הגיב:

    לא מצליחה לשלוח מיילים בקידוד עברי
    אני שולחת דואר ב-ASP בעזרת CDOSYS (וכן, קראתי את המאמר). הוספתי תגיות לעברית ובכל זאת המייל שמגיע אלי נפתח בברירת מחדל של מערב אירופה ולא עברית וצמוד לשמאל ולא לימין.

    אפשר בכלל לשנות את זה?

    את הקוד אני שמה בהודעה הבאה (כדי להצמיד לשמאל).

  13. mirileh הגיב:

    הקוד לשליחת דואר
    var MyMail = Server.CreateObject("cdo.message");
                MyMail.From =sFromName +"<"+sFromAddress+">";
                MyMail.To = sSendtoString;
                MyMail.Subject = sSubject;
                MyMail.HTMLBody = sContent;
                MyMail.BodyPart.Charset = "Windows-1255";
                MyMail.HTMLBodyPart.charset = "Windows-1255";
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing&quot;)=2;
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver&quot;)="sendmail.brinkster.com";
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername&quot;)="[email protected]";
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword&quot;)="chava";
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate&quot;)=1;
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport&quot;)=25;
                MyMail.Configuration.Fields.Update();
                MyMail.Send();
                MyMail=false;

  14. mirileh הגיב:

    הקוד עוד פעם (מיושר באמת לשמאל)


    var MyMail = Server.CreateObject("cdo.message");
                MyMail.From =sFromName +"<"+sFromAddress+">";
                MyMail.To = sSendtoString;
                MyMail.Subject = sSubject;
                MyMail.HTMLBody = sContent;
                MyMail.BodyPart.Charset = "Windows-1255";
                MyMail.HTMLBodyPart.charset = "Windows-1255";
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing&quot;)=2;
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver&quot;)="sendmail.brinkster.com";
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername&quot;)="[email protected]";
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword&quot;)="chava";
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate&quot;)=1;
                MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport&quot;)=25;
                MyMail.Configuration.Fields.Update();
                MyMail.Send();
                MyMail=false;

  15. mirileh הגיב:

    ואם אני כבר פה – שאלת SQL
    אני מחברת שאילתא ל-ACCESS ואני לא מצליחה למצוא את התחביר לאסוף יותר משדה אחד ב-Right Join. כל הדוגמאות הן של inner joins שהם מחוברים ואני פשוט אוספת הרבה שדות ובין השדות השונים יש יותר משדה אחד שאני צריכה לאסוף מטבלה אחרת(אם יש).

    מישהו יודע מה התחביר הנכון?

  16. mirileh הגיב:

    אני צריכה את העזרה שלכם בתחביר
    ואני שואלת כי המאמרים לא עזרו לי.

    אז ככה, כי שאמרתי אני אוספת נתונים מ-3 טבלאות. הright join, לשדות של הטבלה השניה עובדת (לפי הסינטקס הרגיל) ואני לא מצליחה להוסיף עוד right join לשדות של הטבלה השלישית. ניסיתי AND, OR, פסיקים והכל נותן לי הודעת שגיאה. וכל הדוגמאות של שרשור הן לinner join או של inner join עם right join ואני צריכה לצרף right joins.

    אז אנא, תנו לי דוגמא איך לעשות את זה. אתן לכם שמות טבלאות לדוגמא ותראו לי איך הייתם כותבים את התחביר של ה-From
    אני אוספת הודעות משתמשים מטבלה של פורום ForumMessages, ה-join הראשון הוא לטבלת משתמשים Users שם אני לוקחת שם ודואר של משתמש, והjoin  השלישי שאני עושה ניגשת לטבלת בלוגים Blogs ושולפת משם את מספר הבלוג של אותו משתמש (אם יש לו, ואם אין לו אז NULL).

    השדות לשרשור הראשון הם
    ForumMessageUser (מכיל מספר משתמש) מול ה-UserId
    ולשרשור השני (אותו אני לא מצליחה לצרף, כי לא ברור לי התחביר) –
    ForumMessageUser מול BlogUser.

    בבקשה כתבו לי איך הייתם משרשרים את הjoin הזה.

    תודה

  17. ניר טייב הגיב:

    אין הבדל בין inner join
    ל-right join תחבירית רק לוגית. זה בסה"כ שינוי האופרטור שמשמאל ל-JOIN
    תראי מה ניסית ואנו נעזור לשפר

  18. mirileh הגיב:

    בגדול זה מה שעשיתי –


    At the moment I am using a Join – from table ForumMessages and table Users –

    SELECT [ForumMessages].[FMsgId],…,[Users].[UserName],…
    FROM Users Right JOIN ForumMessages ON [Users].[UserID] =[ForumMessages].[FMsgUser]

    I don't know how to also add a join to a third table Blogs. The join to Blogs would be like this if there were only 2 tables –

    SELECT [ForumMessages].[FMsgId],…,[Blogs].[BlogId],…
    FROM Blogs Right JOIN ForumMessages ON [Blogs].[BlogUser] =[ForumMessages].[FMsgUser]

    How do I combine these into one query – always taking all the ForumMessages and adding information from Users and Blogs?

  19. ניר טייב הגיב:

    לא משהו מסובך

    SELECT Users.<fields>, A.Fields
    FROM Users
        RIGHT JOIN (
            Blogs RIGHT JOIN     ForumMessages
        ON [Blogs].[BlogUser] =[ForumMessages].[FMsgUser]
        ) A
        ON [Users].[UserId[=[ForumMessages].[FMsgUser]

    השדות שאתה רוצה לשלוף מהטבלאות blogs ו-ForumMessages תקרא להם ע"י כתיבת האות A (שנתתי את האות הזו ככינוי(Alias) לטבלת האיחוד) הוספת נקודה ושם השדה מ-Blogs או ForumMessages.

    נ.ב
    כתבתי את הקוד הזה על עיוור לכן אל תיתפוס אותי במילה שזה עובד.

    בהצלחה

שלח תשובה