تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[كود] بشرى . لقد عرفت فك ترميز النصوص العربية (توجد دالة جاهزة)
#1
بسم الله الرحمن الرحيم
خمنت شيئا ما وانا جالس افكر في التشفير وقمت بالتسجيل بالمنتدى المحلي باسم حروف عربية هكذا
ا ب ت ث  ج ح خ د ذ ر ز س ش
وذهبت لبرنامج phpmyadmin ورايت تلك الحروف الغامضة فقلت لابد ان اكمل الحروف وسجلت بالحروف المتبقية  ثم بقي حرفان وهما و ي  وانظر لشكل الحروف فقمت بوضعهم بملف نصي وعرفت كل حرف ماذا بقابله
كود :
Ç È Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ý Þ ß á ã ä å æ í
ي و ه ن م ل ك ق ف غ ع ظ ط ض ص ش س ز ر ذ د خ ح ج ث ت ب ا

فكتبت هذه الدالة لاداة مهمة الاستبدال
كود :
Public Function ttoar(ByVal str As String) As String

       For Each t In str
           Select Case t
               Case "Ç"

                   str = str.Replace("Ç", "ا")
               Case "È"

                   str = str.Replace("È", "ب")

               Case "Ê"

                   str = str.Replace("Ê", "ت")

               Case "Ë"

                   str = str.Replace("Ë", "ث")

               Case "Ì"

                   str = str.Replace("Ì", "ج")

               Case "Í"

                   str = str.Replace("Í", "ح")

               Case "Î"

                   str = str.Replace("Î", "خ")

               Case "Ï"

                   str = str.Replace("Ï", "د")

               Case "Ð"

                   str = str.Replace("Ð", "ذ")

               Case "Ñ"

                   str = str.Replace("Ñ", "ر")

               Case "Ò"

                   str = str.Replace("Ò", "ز")

               Case "Ó"


                   str = str.Replace("Ó", "س")

               Case "Ô"


                   str = str.Replace("Ô", "ش")
               Case "Õ"

                   str = str.Replace("Õ", "ص")

               Case "Ö"

                   str = str.Replace("Ö", "ض")

               Case "Ø"

                   str = str.Replace("Ø", "ط")

               Case "Ù"

                   str = str.Replace("Ù", "ظ")

               Case "Ú"

                 
                   str = str.Replace("Ú", "ع")
               Case "Û"

                   str = str.Replace("Û", "غ")

               Case "Ý"

                   str = str.Replace("Ý", "ف")

               Case "Þ"

                   str = str.Replace("Þ", "ق")

               Case "ß"

                   str = str.Replace("ß", "ك")

               Case "á"


                   str = str.Replace("á", "ل")
               Case "ã"

                   str = str.Replace("ã", "م")

               Case "ä"


                   str = str.Replace("ä", "ن")

               Case "å"



                   str = str.Replace("å", "ه")

               Case "æ"


                   str = str.Replace("æ", "و")
               Case "í"


                   str = str.Replace("í", "ي")
               Case "É"

                   str = str.Replace("É", "ة")
           End Select
       Next
       Return str
   End Function

وطريقة استخدامها سهلة وهي كالتالي:
كود :
       Dim con As New MySqlConnection("server=localhost;database=forum;uid=root;pwd=55555")
       Dim cm As New MySqlCommand("", con)
       cm.CommandText = "select `username` from `user` where `userid`='1'" 'or any id for arabic code
       If con.State = ConnectionState.Closed Then
           con.Open()
       End If
       Dim dr As MySqlDataReader = cm.ExecuteReader
       If dr.HasRows Then
           If dr.Read Then
               MsgBox(ttoar(dr.Item("username")))
           End If
       End If

لم اكن اتوقع انها هكذا
من يريد ان يساعدني فليجرب هذه الطريقة على قاعدة بيانات Mysql لمنتدى من نوع vbulletin بترميز
windows-1256
بانتظار تجربتكم
وشكر الله لكم
الرد }}}
تم الشكر بواسطة: oneyemenweb2
#2
.....

هذه الدالة اعتمدت على فكرت الموضوع

ترميز الأحرف العربية يشمل التشكيل (فتحة وكسرة و...) بالإضافة الرموز الخاصة باللغة العربية،
كود :
Private Function conv1256(ByVal txt As String) As String
    Dim dic As New Dictionary(Of String, String)
    Const _1256 As String = "ÐÏÌÍÎåÚÛÝÞËÕÖØßãäÊÇáÈíÓÔÙÒæÉìÑÄÁÆøºÅñõðó¡ÜÃòö¿Âú"
    Const _utf8 As String = "ذدجحخهعغفقثصضطكمنتالبيسشظزوةىرؤءئّ؛إًٌَُ،ـأٍِ؟آْ"
    For i = 0 To (_1256.Length) - 1
        dic.Add(_1256.Chars(i), _utf8.Chars(i))
    Next i
    For Each ch In txt
        conv1256 &= If(dic.ContainsKey(ch), dic.Item(ch), ch)
    Next
End Function

وطريقة استخدامها
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MsgBox(conv1256("ÈÓãö Çááå ÇáÑøÍãä ÇáÑøÍíã"))
End Sub

.....
الرد }}}
تم الشكر بواسطة: oneyemenweb2
#3
ماشاء الله عليك
احس ان الطريقة هذي معروفة لديك من زمان بس الكود اللي انت كتبت متكامل لكل الحروف...عدلت على المثال اللي عندي وصار سريع للغاية وانتهت المشكلة.
الرد }}}
تم الشكر بواسطة:
#4
.....

الطريقة تم عملها بناء على الموضوع وليست من زمان، وأعتقد تفيد في VB.NET ولا أعتقد أنهاعملية مائة في المائة.

.....
الرد }}}
تم الشكر بواسطة:
#5
هي عملية بشرط ...... فقط مثل الترميز المذكور.
وجربت نصوص متعددة وطويلة ونجح تحويل الحروف لاصلها
الرد }}}
تم الشكر بواسطة:
#6
طريقه جميلة جدا وخالية من اي تعقيد
الرد }}}
تم الشكر بواسطة:
#7
السلام عليكم ورحمة الله وبركاته

وهذه أيضا طريقة أخرى:
كود :
Private Function GetArabic(ByVal txt As String) As String
       Dim OriginalBytes As Byte() = (From ch In txt Select CByte(AscW(ch))).ToArray
       Dim EncodedBytes As Byte() = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding("windows-1256"), System.Text.Encoding.UTF8, OriginalBytes)
       Return System.Text.Encoding.UTF8.GetString(EncodedBytes)
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       MsgBox(GetArabic("ÐÏÌÍÎåÚÛÝÞËÕÖØßãäÊÇáÈíÓÔÙÒæÉìÑÄÁÆøºÅñõðó¡ÜÃòö¿Âú"))
End Sub
الرد }}}
تم الشكر بواسطة: سعود
#8
أخي sooriaty03 اهلا وسهلا بيك  وجزاك عنا كل خير
الكود يعطي علامات استفهام .
ياترى لو اطلعتم على ملفات الدخول لنسخة vbulletin4 هل يمكن ان تستخرجوا السر؟

شكر الله لكم جميعا.
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم