תווים מיוחדים

20/10/2010

אין תגובות

נדרשנו להוסיף לטבלת ניהול טקסט הכולל בין היתר את האות היוונית Σ (אפשר להבין שמדובר בשדה המתאר פעולת סיכום מכיוון שסיגמה מציינת סכום). יצרתי סקריפט מתאים, הרצתי בסביבת הפיתוח ושמרתי, אבל כשפתחתי שוב כדי להעביר לסביבת הבדיקות- התברר שבכל מקום בו הופיע קודם התו Σ הופיע כעת התו ?, והסיבה לכך היא בעיית Encoding בשמירת הקובץ..

יכול להיות שיש לכך פתרון טכני (לשמירה) ואף אשמח לדעת מהו, אבל כפתרון נקודתי מאולתר השתמשתי ב- NChar(931) שמחזיר את התו המבוקש.

מהיכן הפונקציה הזו צצה? ניתן להשתמש במערכת תווי Ascii שכוללת 256 תווים (כולל תווי בקרה) ולשמור אותם בתור Char או Varcahr, ואפשר להשתמש במערכת תווי Unicode שכוללת 65536=256*256 תווים ולשמור אותם בתור NChar או NVarchar; אם כי במקרה השני נפח האחסון יהיה כפול.

כשמשתמשים ב-Ascii ניתן לדעת את ערכו של כל תו על ידי הפקודה

Select Ascii('A');
Go

או למצוא את התו שערך ה-Ascii שלו נתון על ידי

Select Char(65);
Go

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

Select Unicode(N'Σ');
Go

(כדאי לשים לב שלפני טקסט Unicode מפורש יש לציין את התו N)

או למצוא את התו שערך ה-Unicode שלו נתון על ידי

Select NChar(931);
Go

כדי לקבל רשימה של כל התווים- ניצור לולאת הדפסה:

Declare @I Int;

Set @I=0;

While @I<65536

    Begin

    Print Cast(@I As NVarchar)+'='+NChar(@I);

    Set @I=@I+1;

    End

כדי לעשות קצת סדר- התו ₪ ערכו 8362, התו € (אירו) ערכו 8364, והתו £ (פאונד אנגלי) ערכו 163;

התווים ביוונית מופיעים החל מ-1024,

והתווים בעברית החל מ-1488.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *