הפורום נסגר!

במקומו נפתח פורום חדש, טוב יותר בהרבה מובנים. >>>>
אתם מוזמנים להצטרף אליו, בואו!

ההצטרפות לפורום התכנות החדש כרוכה בתשלום חודשי סמלי.

המרת UCS2 ב VBA

שיתוף של ידע פרקטי, ספריות, קוד, ודוקמנטציה ברוחב לב החברים היקרים.

המרת UCS2 ב VBA

הודעהעל ידי מצפה לגדול » 25 דצמבר 2017, 01:40

בזמן האחרון, ניסיתי לקבל את אנשי הקשר מהפלאפון למחשב,דרך פקודות GSM.
זה אומר ששולחים לפלאפון פקודה דרך יציאת קום, והוא מבצע.
את יציאת הקום אפשר ליצור דרך הבלוטוס'.

לדוגמא: להוצאת שיחה, אפשר לשלוח את הפקודה הבאה:
קוד: בחר הכל
ATD*2800;

ואחריה "אנטר", והפלאפון יחייג למספר *2800.

לקבלת אנשי הקשר, יש לשלוח את הקוד הזה:
קוד: בחר הכל
AT+CSCS="UCS2";+CPBS="ME";+CPBR=1,1000

(הפקודה הראשונה, מגדירה אותו על פורמט UCS2, שהוא היחיד שתומך בעברית כדלהלן,
הפקודה השנייה מגדירה אותו על אנשי הקשר של זיכרון הפלאפון, ולא הסים,
הפקודה השלישית מבקשת את אנשי הקשר, מ1, עד 1000.)

כשניסיתי לקבל את אנשי הקשר, גיליתי שבעברית, הפורמט היחיד שהוא תומך זה UCS2.
בשאר הפורמטים, הגיעו סימני שאלה וכו'.
אבל הוא היה משהו כזה:
קוד: בחר הכל
05DE05E605E405D4002005DC05D205D305D505DC

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

בסוף הבנתי שזה מחולק ליחידות בנות 4 תווים, וממילא זה הקוד ההקסדצימלי של תווי היונקוד.

להלן קוד ההצפנה והפיענוח:
פיענוח:
vbnet code
Function DecodingUCS2(str As String) As String

Dim Temp As String
Dim l, i, hexN As Long

l = Len(str)

Temp = ""

For i = 1 To l Step 4

'המרת המספר מהקסדצימלי, לדצימלי
hexN = Val("&h" & Mid(str, i, 4))

'קבלת האות בפועל, וצירופה למחרוזת
Temp = Temp & ChrW(hexN)

Next

DecodingUCS2 = Temp

End Function


הצפנה:
vbnet code
Function EncodingUCS2(str As String) As String

Dim Temp As String
Dim l, i As Long

l = Len(str)

Temp = ""


For i = 1 To l

'הערך של תו היוניקוד
unN = AscW(Mid(str, i))

'המרה למספר הקסדצימלי
hexN = Hex(unN)

'השלמת המספר ל4 תווים, והוספה למחרוזת
Temp = Temp & Right$("0000" & hexN, 4)

Next

EncodingUCS2 = Temp

End Function
מצפה לגדול
משתמש וותיק
 
הודעות: 58
הצטרף: 15 מרץ 2017, 02:57
שלח תודה: 28 פעמים
קיבל תודה: 20 פעמים

Re: המרת UCS2 ב VBA

הודעהעל ידי דוד ל.ט. » 25 דצמבר 2017, 01:42

גדלת!
(חוץ מהקטע של הVBA..)
סמל אישי של המשתמש
דוד ל.ט.
משתמש וותיק
 
הודעות: 2380
הצטרף: 12 יוני 2013, 11:02
שלח תודה: 1238 פעמים
קיבל תודה: 2019 פעמים

Re: המרת UCS2 ב VBA

הודעהעל ידי דוד ל.ט. » 25 דצמבר 2017, 15:10

לפי מה שאני קורא בויקיפדיה אז זה תואם לUTF16.
ובמקום הצפנה תשתמש במינוח קידוד.
סמל אישי של המשתמש
דוד ל.ט.
משתמש וותיק
 
הודעות: 2380
הצטרף: 12 יוני 2013, 11:02
שלח תודה: 1238 פעמים
קיבל תודה: 2019 פעמים


חזור אל שיתופיה

מי מחובר

משתמשים הגולשים בפורום זה: all bots ו 0 אורחים

Fatal: ./cache/ is NOT writable.