הבלוג של גרי רשף

20/10/2010

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

Filed under: Uncategorized — תגיות: , , , , , , , — גרי רשף @ 07:15

נדרשנו להוסיף לטבלת ניהול טקסט הכולל בין היתר את האות היוונית Σ (אפשר להבין שמדובר בשדה המתאר פעולת סיכום מכיוון שסיגמה מציינת סכום). יצרתי סקריפט מתאים, הרצתי בסביבת הפיתוח ושמרתי, אבל כשפתחתי שוב כדי להעביר לסביבת הבדיקות- התברר שבכל מקום בו הופיע קודם התו Σ הופיע כעת התו ?, והסיבה לכך היא בעיית 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.

מודעות פרסומת

2 תגובות »

  1. "יכול להיות שיש לכך פתרון טכני (לשמירה) ואף אשמח לדעת מהו" – אם אני מבין נכון, כשאתה שורת לסקריטפ של SQL הוא לא נשמר לך תקין?
    אם כן, כשנפתחת התיבת שמירה,כחלק מכפתור ה SAVE יש חץ כלפי מטה שפותח DROP DOWN של אפשרויות.
    תבחר ב ==>save with encoding ==>
    unicode (utf-8 with signature)- codepage 65001
    מקווה שזה זה
    פלג

    תגובה של פלג — 20/10/2010 @ 09:35

    • תודה רבה- זו כנראה הדרך הנכונה.. 🙂

      תגובה של גרי רשף — 20/10/2010 @ 09:37


RSS feed for comments on this post. TrackBack URI

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

בלוג בוורדפרס.קום.

%d בלוגרים אהבו את זה: