DCSIMG
עברית ו - ASP.NET (או: למה רואים ג'יבריש \ סימני שאלה?) - Ohad Aston - ASP.NET Blog

Ohad Aston - ASP.NET Blog

פיתוח לאינטרנט, ASP.NET ועוד

על הבלוג

"הפסק להיות מעשי כל כך. התחל לעשות את הדברים שתמיד רצית לעשות. הכרתי עורכי דין שעזבו את המקצוע שלהם ונעשו שחקני תיאטרון, ורואי חשבון שהפכו לנגני ג'ז. במעבר הזה הם מצאו את האושר העמוק שחמק מהם כל כך הרבה זמן. אז מה אם הם כבר לא יכולים להרשות לעצמם לנסוע לשתי חופשות בשנה ולהחזיק בית קיץ מפואר באיי קיימן? סיכון מחושב מביא לך רווחים עצומים. איך תוכל להגיע לבסיס השלישי אם אחת מרגליך תקועה בבסיס השני?"
(מתוך: הנזיר שמכר את הפרארי שלו)

Try Opera today - it's free

Ohad Aston's Facebook profile

Pagerank - קידום בגוגל

website counter

Powered by TinyMCE
Add to Technorati Favorites
Add to Google

אני ב - Twitter

    הבלוגספירה

    עצומות חשובות - חתמו והשפיעו!

    פרוייקטים ששווים הצצה

    עברית ו - ASP.NET (או: למה רואים ג'יבריש \ סימני שאלה?)

    אחת השאלות הנפוצות יותר בפורומים של פיתוח אתרים ו ‎.NET היא "מדוע לא רואים עברית?".

    בכמה שלבים פשוטים, אפשר לדאוג שלא יהיו בעיות עם העברית באתרכם:

    קידוד

    הקידוד המומלץ לעבודה ב - Web (ולא רק בו) הוא Unicode, נקודה.

    ה - Unicode הוא תקן בינלאומי לייצוג טקסט, שתומך בריבוי שפות. התקן הזה נתמך במערכות הפעלה רבות, והאינטרנט הולך לכיוונו.

    לקריאה נוספת:

    Visual Studio

    בכדי שהדפים שלנו יתמכו ב - Unicode, יהיה עלינו לשמור אותם בקידוד זה.

    ב - Visual Studio בחלון Save \ Save As, מופיע ליד כפתור ה - Save חץ קטן, לחיצה עליו תפתח תפריט עם שתי אפשריות, אחת מהן היא Save With Encoding:

    חלון שמירה ב - Visual Studio

    נבחר באופציה השניה, ויפתח חלון נוסף, בו ניתן לבחור את הקידוד:

    VisualStudioSave2 

    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

    בנוסף, יש להגדיר בשרת את הקידוד בו אנו משתמשים. ניתן להגיד זאת בשני מקומות:

    1. ב - Page Declaration בתחילת כל דף aspx.
    2. ב - 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 יהיו בעיות בזמן ההעלאה, או שהמסד ישמור את הנתונים בצורה לא תקינה (קרה לא מעט), לכן רצוי לטפל בהכל לפני כל פרוייקט.

    פורסם: Apr 20 2008, 12:09 PM by OhadAston | with 15 comment(s) |
    תגים:,

    תוכן התגובה

    Avi Pinto כתב/ה:

    קצר וממצה!

    # April 20, 2008 3:34 PM

    DrorEngel כתב/ה:

    עכשיו הפוסט הבא יהיה להסביר מה ההבדל בין UTF8  עם חתימה ובלי חתימה ואיך משתמשים במחלקת encoding

    # April 20, 2008 4:01 PM

    אוהד אסטון כתב/ה:

    האמת שלא ירדתי לעומק החתימה, אבל בהחלט זה נושא לפוסט, כולל עבודה עם מחלקת Encoding.

    תודה.

    # April 20, 2008 5:29 PM

    Maxim כתב/ה:

    אחלה פוסט.

    קידוד זו צרה צרורה, המון מפתחים לא מקדישים לכך מספיק תשומת לב ואח"כ אוכלים אותה במכונות של לקוח.

    ב-VS, ניתן לקבוע מראש באיזה פורמט לשמור את הקבצים, סמנו V באופציה הבאה:

    tools >> options >> environment >> documents >> save documents as unicode when data cannot be saved in

    codepage

    עוד אפשרות של קינפוג:

    tools >> options >> text editor >> general >> auto-detect utf-8 encoding without signature

    עוד עניין בעייתי בהמון מערכות מידע - תאריכים, אכלתי המון קש בגלל פורמטים שונים של תאריכים במחשבי לקוחות.

    # April 22, 2008 6:16 PM

    OhadAston כתב/ה:

    תודה

    ולגבי התאריכים, ב - .NET Framework אפשר לטפל יופי בתאריכים, גם לזה אני אקדיש פוסט.

    # April 24, 2008 8:28 PM

    Sirmoreno כתב/ה:

    מאמר נחמד מאד, אבל נתקלתי בבעיה נוספת בעברית

    כך אני שולח קבצים למשתמש:

    string filename = GetSubString(filepath,filepath.LastIndexOf("\\") + 1, filepath.Length - filepath.LastIndexOf("\\") - 1);

    Response.Clear();

    Response.ContentType = "application/octet-stream";

    Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);

    System.IO.FileInfo fileInfo = new System.IO.FileInfo(filepath);

    Response.AppendHeader("Content-Length", fileInfo.Length.ToString()); //Sends only the File with no Extra bytes

    Response.Flush();

    Response.WriteFile(filepath);

    Response.Flush();

    כששם הקובץ מכיל תווים בעברית הם נהרסים,

    למרות שאת תוכן הקובץ המשתמש רואה מצויין

    ניסיתי:

    Response.ContentEncoding = System.Text.Encoding.UTF8; //for Hebrew

    Response.HeaderEncoding = System.Text.Encoding.UTF8; //for Hebrew

    וגם:

    Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1255"); //for Hebrew

    Response.HeaderEncoding = System.Text.Encoding.GetEncoding("windows-1255"); //for Hebrew

    אבל לא פתר את הבעיה.

    כל רעיון יכול לעזור.

    תודה

    # June 19, 2008 9:59 AM

    אריאל כתב/ה:

    כמה דם נשפח בכל אתר בגלל הבעיות האלו, מסתבר שצריך לקחת בחשבון גם הגדרות שונות ב-server עצמו ולא רק בקידוד של הדפים.

    # July 6, 2008 9:39 AM

    תומר כתב/ה:

    איך אני פותר את בעיית הג'יבריש כאשר השדות במסד הנתונים מוגדרים כ- iso-8859-8-i ואינני מעוניין לשנות כלום במסד נתונים?

    # August 25, 2009 11:37 AM

    תמיר כתב/ה:

    כל הכבוד!!!!

    מסביר ופותר הרבה כאבי ראש.

    יישר כח!!

    # April 20, 2010 9:40 AM

    איך לראות עברית ב csv כתב/ה:

    Response.ContentEncoding = Encoding.GetEncoding(1255);

    # May 9, 2010 7:09 PM

    אולי מישהוא יכול לעזור כתב/ה:

    יש לנו אתר שמתבסס על SQL SERVER 2005 וASP.NET

    הוא מתפקד בסדר.

    רוצים לעבור ל SQL SERVER 2008

    רוב הטקסט באתר נראה בסדר. והשדות של text  מגיעים לסרבר מה DB בתור סימני שאלה במקום עברית. עם השדות שהם nvarchar - הכל בסדר. ה collation  של הDB SQL_Latin1_General_CP1255_CI_AS

    בWeb.config  הכל מסודר ל Utf-8

    התקנו SQL 2008 ועשינו attach לבסיסי נתונים.

    יש למישהוא רעיון איך פותרים?

    # May 10, 2010 11:08 AM

    mama כתב/ה:

    איזה כיף, תודה על המאמר, פתר לי את הבעיה

    # December 13, 2010 10:13 PM

    יונתן כתב/ה:

    יש לי אפליקציית ASP.NET שתפקידה לשלוח מיילים.

    אם אני מצרף Attachment ששם הקובץ הוא בעברית, ואורכו עולה על 20 תווים, הקובץ כולו משתבש.

    ניסית לעשות את הדברים הבאים:

    att.NameEncoding = System.Text.Encoding.GetEncoding(1252)

    וגם

    att.NameEncoding = System.Text.Encoding.GetEncoding(1255)

    ושום דבר לא עזר, יש למישהו רעיון?

    # June 20, 2011 10:37 AM

    ליאור כתב/ה:

    תודה רבה ! המאמר שלך עזר לי לאחר הרבה נסיונות האבקות מתישים עם ASP.NET

    # October 23, 2011 2:37 PM

    עודד כתב/ה:

    לא מצליח לראות עברית!

    # January 6, 2012 9:27 AM
    שלח תגובה

    (שדה חובה)  

    (שדה חובה)  

    (אופציונלי)

    (שדה חובה) 

    Please add 1 and 5 and type the answer here:


    Enter the numbers above: