עברית ו - ASP.NET (או: למה רואים ג'יבריש \ סימני שאלה?)
אחת השאלות הנפוצות יותר בפורומים של פיתוח אתרים ו .NET היא "מדוע לא רואים עברית?".
בכמה שלבים פשוטים, אפשר לדאוג שלא יהיו בעיות עם העברית באתרכם:
קידוד
הקידוד המומלץ לעבודה ב - Web (ולא רק בו) הוא Unicode, נקודה.
ה - Unicode הוא תקן בינלאומי לייצוג טקסט, שתומך בריבוי שפות. התקן הזה נתמך במערכות הפעלה רבות, והאינטרנט הולך לכיוונו.
לקריאה נוספת:
Visual Studio
בכדי שהדפים שלנו יתמכו ב - Unicode, יהיה עלינו לשמור אותם בקידוד זה.
ב - Visual Studio בחלון Save \ Save As, מופיע ליד כפתור ה - Save חץ קטן, לחיצה עליו תפתח תפריט עם שתי אפשריות, אחת מהן היא Save With Encoding:
נבחר באופציה השניה, ויפתח חלון נוסף, בו ניתן לבחור את הקידוד:
HTML
כשנשלח דף HTML לדפדפן, יש לידע אותו על הקידוד, אחרת ייתכן והדפדפן יבחר בקידוד שונה (לעתים הקידוד שנקבע בדף האחרון, או ברירת המחדל של הדפדפן).
הגדרת הקידוד של דף HTML מתבצעת באמצעות תג meta:
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
XML
אם מדובר על קובץ XML (כמו RSS), הקידוד מוגדר בהצהרה שפותחת את המסמך:
<?xml version="1.0" encoding="utf-8"?>
ASP.NET
בנוסף, יש להגדיר בשרת את הקידוד בו אנו משתמשים. ניתן להגיד זאת בשני מקומות:
- ב - Page Declaration בתחילת כל דף aspx.
- ב - Web.Config תחת התגית Globalization.
יש לציין את ה - RequestEncoding, וה - ResponseEncoding.
ב - Web.Config זה יראה כך:
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"/>
SQL Server
ב - SQL Server ישנם Data Types מיוחדים לשמירת נתונים ב - Unicode. שמם של השדות האלו מתחיל ב - N:
- NChar - המקביל היוניקודי ל - Char.
- NVarChar - המקביל של VarChar.
- NText - המקביל של Text.
ההבדל בין הגרסה ה - Nית, ללא Nית, היא שהשדות שמתחילים ב - N משתמשים בשני בתים בכדי לאחסן תו (בכדי שניתן יהיה לאחסן תו בכל שפה).
יש להשתמש בסוגים אלו בבניית בסיס הנתונים. בנוסף יש לזכור שכל הפרמטרים שמועברים ל - SQL Server צריכים להיות מאותו הסוג.
במידה ולא משתמשים בפרמטרים במשפטי ה - SQL, יש להוסיף את האות N לפני כל String. לדוגמה:
SET MyField = N'Some text';
חשוב לזכור שגם אם לא יישמתם את כל הצעדים, ולא נתקלם בבעיות עם העברית במכונת הפיתוח שלכם, ייתכן ובדפדפנים במחשבים אחרים יצוצו בעיות (אם אין תג meta מתאים), בשרת ה - Production יהיו בעיות בזמן ההעלאה, או שהמסד ישמור את הנתונים בצורה לא תקינה (קרה לא מעט), לכן רצוי לטפל בהכל לפני כל פרוייקט.