קידוד עברית לתווי יוניקוד באמצעות VBA
-
שלום, בעבר נשאלה כאן שאלה אודות קידוד URL והובא קוד מוצלח על ידי דוד ל.ט.
כעת יש לי שאלה דומה לגבי קידוד של יוניקוד לתווי יוניקוד, כלומר אם אני מכניס "א" אני אמור לקבל "%u05D0" יש איזה אתר כאן שמראה את המפה, וכאן הוא מראה את הפירוט של האות "א" בעברית.
השאלה היא, איזו היא דרך נקייה וקלה בקוד לקבל את הקידוד.
אם תשאלו מה לי ולצרה הזאת? התשובה פשוטה, באמצעות אתר דואר ישראל אפשר לקבל מיקוד לפי כתובת, ממש תענוג, אבל רק חסר לי את הקידוד.
הנה למשל הלינק הזה:
"http://www.israelpost.co.il/zip_data1.nsf/SearchZip?OpenAgent&Location=%u05D1%u05E0%u05D9 %u05D1%u05E8%u05E7&POB=&Street=%u05D7%u05D6%u05D5%u05DF %u05D0%u05D9%u05E9&House=1&Entrance=
"
נותן לנו את המיקוד של רחוב חזון איש 1 בבני ברק (למעט 4 התווים הראשונים, שמשמשים לזיהוי התשובה).זה נכס שכדאי לאמץ אותו בשביל כל מי שעוסק ב IT.
אודה על כל עזרה.
פורסם במקור בפורום CODE613 ב09/08/2013 15:09 (+03:00)
-
טוב אז מצאתי לגמרי במקרה נתקלתי בקוד הזה תוך כדי חיפוש של נושא אחר לגמרי. יכול לעזור לכל עם ישראל.
Public Function UnicodeEncode(str) As String If IsNull(str) Then Exit Function Dim i, j, aL1, aL2, c, p aL1 = Array(&H22, &H5C, &H2F, &H8, &HC, &HA, &HD, &H9) aL2 = Array(&H22, &H5C, &H2F, &H62, &H66, &H6E, &H72, &H74) For i = 1 To Len(str) p = True c = Mid(str, i, 1) For j = 0 To 7 If c = Chr(aL1(j)) Then UnicodeEncode = UnicodeEncode & "%" & Chr(aL2(j)) p = False Exit For End If Next If p Then Dim a a = AscW(c) If a > 31 And a < 127 Then UnicodeEncode = UnicodeEncode & c ElseIf a > -1 Or a < 65535 Then UnicodeEncode = UnicodeEncode & "%u" & String(4 - Len(Hex(a)), "0") & Hex(a) End If End If Next End Function
פורסם במקור בפורום CODE613 ב11/08/2013 00:54 (+03:00)
-
תודה למג'יק קוד על עריכת הקוד ונקיונו:
Public Function UnicodeEncode(str) As String If IsNull(str) Then Exit Function Dim i, a For i = 1 To Len(str) a = AscW(Mid(str, i, 1)) If a > -1 And a < 127 Then UnicodeEncode = UnicodeEncode & "%" & String(2 - Len(Hex(a)), "0") & Hex(a) ElseIf a > -1 Or a < 65535 Then UnicodeEncode = UnicodeEncode & "%u" & String(4 - Len(Hex(a)), "0") & Hex(a) End If Next End Function :|
פורסם במקור בפורום CODE613 ב11/08/2013 18:50 (+03:00)
-
והנה אותה הפונקציה ב VBNET
Public Function UnicodeEncode(ByVal str As String) As String If String.IsNullOrEmpty(str) Then Exit Function Dim i, a For i = 1 To Len(str) a = AscW(Mid(str, i, 1)) If a > -1 And a < 127 Then UnicodeEncode = UnicodeEncode & "%" & New String("0", 2 - Len(Hex(a))) & Hex(a) ElseIf a > -1 Or a < 65535 Then UnicodeEncode = UnicodeEncode & "%u" & New String("0", 4 - Len(Hex(a))) & Hex(a) End If Next End Function
פורסם במקור בפורום CODE613 ב07/12/2013 22:06 (+02:00)