דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שיתוף: איך לפענח את השם בעברית בקובץ VCard (*.vcf)

שיתוף: איך לפענח את השם בעברית בקובץ VCard (*.vcf)

מתוזמן נעוץ נעול הועבר תכנות
4 פוסטים 3 כותבים 971 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • clickoneC מנותק
    clickoneC מנותק
    clickone
    כתב ב נערך לאחרונה על ידי clickone
    #1

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

    =D7=93=D7=95=D7=92=D7=9E=D7=90
    

    לקח לי הרבה זמן להבין מה זה הקידוד הזה 😞

    אז אחרי שיטוט וחיפוש בגוגל (לא יודע איך זה נעלם מעיני עד היום), צריך להחליף את הסימן שווה (=) באחוזים (%), ואז יוצא לנו בעצם טקסט UrlEncoded, ומשם הדרך להמרה מאד פשוטה.

    קוד C# לדוגמא:

    HttpUtility.UrlDecode((vcard.FirstName + " " + vcard.MiddleName + " " + vcard.LastName).Replace("=", "%"))
    

    קוד C# מלא של המרת קובץ vcf לרשימה: (השתמשתי בחבילה של MixERP.Net.VCards)

    var path = @"C:\Users\ClickOne\Dropbox\00002.vcf";
    
    IEnumerable<VCard> vcards = MixERP.Net.VCards.Deserializer.Deserialize(path);
    
    vcards.Take(100).Select(v => new
    {
    	name = HttpUtility.UrlDecode((v.FirstName + " " + v.MiddleName + " " + v.LastName).Replace("=", "%"))
    }).Dump();
    

    אני מניח את זה כאן, למקרה שעוד מישהו נתקל/צריך את זה.

    עריכה: שכחתי את הדבר הכי חשוב, מקור

    אין טסט כמו פרודקשן.

    המייל שלי urivpn@gmail.com

    dovidD ג 2 תגובות תגובה אחרונה
    17
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לclickone ב נערך לאחרונה על ידי dovid
      #2

      @clickone הדרך שהבאת ממש אלגנטית! במקום להתחיל לכתוב את הקוד של המרת 64 לטקסט.
      החבילה הזו דפוקה שהיא לא עושה את זה, כי זה ממש התפקיד שלה.
      הקידוד לא חייב להיות ככה, הוא מוגדר בשורה הזו:

      N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;=
      

      שנמצאת מעל כל איש קשר.
      QUOTED-PRINTABLE זה שם הקידוד.

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      8
      • ג מנותק
        ג מנותק
        גאון
        השיב לclickone ב נערך לאחרונה על ידי
        #3

        @clickone כתב בשיתוף: איך לפענח את השם בעברית בקובץ VCard (*.vcf):

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

        =D7=93=D7=95=D7=92=D7=9E=D7=90
        

        לקח לי הרבה זמן להבין מה זה הקידוד הזה 😞

        אז אחרי שיטוט וחיפוש בגוגל (לא יודע איך זה נעלם מעיני עד היום), צריך להחליף את הסימן שווה (=) באחוזים (%), ואז יוצא לנו בעצם טקסט UrlEncoded, ומשם הדרך להמרה מאד פשוטה.

        קוד C# לדוגמא:

        HttpUtility.UrlDecode((vcard.FirstName + " " + vcard.MiddleName + " " + vcard.LastName).Replace("=", "%"))
        

        קוד C# מלא של המרת קובץ vcf לרשימה: (השתמשתי בחבילה של MixERP.Net.VCards)

        var path = @"C:\Users\ClickOne\Dropbox\00002.vcf";
        
        IEnumerable<VCard> vcards = MixERP.Net.VCards.Deserializer.Deserialize(path);
        
        vcards.Take(100).Select(v => new
        {
        	name = HttpUtility.UrlDecode((v.FirstName + " " + v.MiddleName + " " + v.LastName).Replace("=", "%"))
        }).Dump();
        

        אני מניח את זה כאן, למקרה שעוד מישהו נתקל/צריך את זה.

        עריכה: שכחתי את הדבר הכי חשוב, מקור

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

        clickoneC תגובה 1 תגובה אחרונה
        -2
        • clickoneC מנותק
          clickoneC מנותק
          clickone
          השיב לגאון ב נערך לאחרונה על ידי
          #4

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

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

          אין טסט כמו פרודקשן.

          המייל שלי urivpn@gmail.com

          תגובה 1 תגובה אחרונה
          15

          בא תתחבר לדף היומי!
          • התחברות

          • אין לך חשבון עדיין? הרשמה

          • התחברו או הירשמו כדי לחפש.
          • פוסט ראשון
            פוסט אחרון
          0
          • דף הבית
          • קטגוריות
          • פוסטים אחרונים
          • משתמשים
          • חיפוש
          • חוקי הפורום