674
צפיות
צפיות
12
תשובות
תשובות
תוצאות מ SQL Server 2000 מופיעות כס
בניתי אתר ב asp.net עם sql server 2000, בתחילה האתר ישב על המחשב המקומי והכל היה תקין, כאשר העלתי אותו לשרת מרוחק, המידע שמגיע מבסיס הנתונים מופיע כ "????" בלבד.
איך ניתן לתקן את זה?
12 תשובות
בעית קידוד?
כן
בקובץ ה web.config מוגדר:
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
וזה לא ממש עוזר
ומה עם קובץ הHTML?
מוגדר לו header של קידוד?
זו אכן בעית קידוד
אבל לא בעיה בקידוד בHTML אלא בשרת SQL
תעלה מחדש את המסד אבל תדאג שהוא יקודד כמו שצריך…
זה קורה המון במעבר בין שרתים…
היתה לי בעיה זהה עם שרת mysql כשעברתי שרת…
העניין הוא שכשאתה מוריד את הקובץ sql מהשרת הקודם (כנראה אצלך בבית) אז הוא יוצא עם קידוד שונה מהקידוד שקיים בשרת החדש…
אתה צריך שהקובץ sql שלך יהיה בעל קידוד זהה לשרת החדש!
מה שאני עשיתי היה מאוד פשוט
הקובץ sql שלי, כאשר פתחתי אותו בפנקס רשימות ראיתי שטקסט עברי הינו בג'יבריש.
אומנם על השרת הישן בג'יבריש תוקן לעברית כאשר עבר לצד הלקוח, אך בחדש לא כך בגלל הקידוד השונה.
לכן הורדתי תוכנה שנקראת HEBTML
תוכנה שבמהותה לוקחת קבצי html והופכת עברית בצורת ג'יבריש (כמו שהיה לי) לעברית תקנית שאפשר לקרוא גם בפנקס הרשימות, אך כמובן שאפשר להשתמש בה גם לקבצי sql כי גם אותם אפשר לפתוח בפנקס רשימות.
מה שעושים בתוכנה זה פשוט
פותחים את הקובץ sql דרך התוכנה ונדמה לי שצריך ללחוץ על כפתור מסוים אז כל הטקסט הג'יבריש הופך לעברית
לאחר מכן תשמור את הקובץ כsql כמובן ותעלה אותו לשרת החדש.
סליחה שסיבכתי אותך ככה, כשתראה את התוכנה תבין שזה בדיוק שניה…
ממש לא בעיה להשיג את התוכנה בקאזה או גוגל…
תהנה. 99% שזה יצליח!
הנה מצאתי לך לינק להורדה של התוכנה
הורדה דרך נענע… תהנה.
להנהלה:
סליחה על הספאם, פשוט זה יחסוך לבן אדם זמן לחפש את התוכנה.
יכול להיות
שזו הבעיה שלו.
ואם כן, הוא פשוט לא הגדיר דברים שהוא היה צריך, כמו קידוד של טבלאות ודברים כאלו.
כי לפי מה שאתה אומר, נראה שגם אתה לא עשית ככה.
כשאתה מוריד קובץ SQL גיבוי, הוא אמור להראות עברית נכונה.
איך מגדירים את זה נכון?
איך מגדירים את בסיס הנתונים נכון?
תבדוק את זה
יכולות להיות כמה בעיות
1 הכנסת הנתונים ל DB
2 איכסון הנתונים
3 שליפת הנתונים
1, 3:
כדי להגדיר את דף האינטרנט (אני מניח ASP) כעברית
<%@ Language="VBScript" codepage=1255%>
גם בדף שמכניס ל DB וגם בדף ששולף (אפשר להגדיר במקום עברית שיהיה UTF)
2:
צריך להגדיר את ה DB שה collation שלו יהיה עברית (בתנאי שהמחשב יתמוך בזה)
או עדיף, להגדיר את כל השדות של התוים כיוניקוד (ב SQL SERVER זה n לפני סוג הנתונים, לדוגמא varChar => nVarChar (מה שאומר שהם תופסים כפול מקום, לכל דבר שי מחיר…)
1:
בנוסף, אם בחרת באפשרות (המומלצת) של יוניקוד, בכל שימוש בסטרינג יש לסמן את הנתונים כיוניקוד, לדוגמא (SQL SERVER)
INSERT INTO table N'text'
ה N לפני הציטוט אומרת שהטקסט שבא אחריה הוא יוניקוד
בהצלחה
לא תמיד
לפעמים יש שרתי ווינדוס ששרת הדטא בייס הוא תוכנה באנגלית שלא תומכת בעברית בצורה מלאה ויש כאלה שהתוכנה עצמה של הדטא בייס היא בעברית ואז הקידוד הוא אוטומטי…
זה לא לגמרי נכון
אין דבר כזה תוכנת שרת שלא תומכת בעברית.
אין דבר כזה בכלל תמיכה בעברית. היא פשוט מציגה את הנתונים עם מה שהיא מכירה.
אם הגדרת נכון, ואתה מוריד את זה, המחשב שלך צריך להציג לך לפי מה שהוא מכיר.
אלא אם כן הגדרת משהו לא נכון.
הצגה בשרת או בלקוח?
אם לא הותקנו פונטים עבריים בשרת, איך הוא יציג עברית?
הוא יוכל לשלוח משהו שהלקוח יפענח כעברית אבל אם אתה ניגש ברמוט דסקטופ תראה חירבושים.
unicode (גם בהגדרת השדות עצמם) אמור לפתור את רוב הבעיות.
אתה צודק
דיברתי על ASCII.
ולא דיברתי על טרמינל כל שהוא.