![]() |
|
مقدمة الي تشفير الحروف الأبجدية العربية - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : مقدمة الي تشفير الحروف الأبجدية العربية (/showthread.php?tid=20033) |
مقدمة الي تشفير الحروف الأبجدية العربية - silverlight - 16-04-17 بسم الله الرحمن الرحيم مقدمة: الحروف العربية مظلومة قليلا و غاليا اي مبرمج يعاني أحيانا في التعامل مع الحروف العربية تحديدا او قد يعاني أيضا حين يريد التعامل مع اي حروف مكتوبة بلغة أخري غير اللغة الإنجليزية و في هذا الموضوح سأحاول أن أوضح كيفية تشفير الحروف العربية فقط الفكرة الحروف بشكل عام لها جداول وداخل هذه الجداول ستجد أن الحروف مرتبة برقم مسلسل و ايضا لها رقم Hex أو بمعني أدق كل حرف في جداول الحروف له مميزات يتم استخدامها للتفريق بينه و بين باق الحروف الأمثلة التالي توضح كيفية الحصول علي الرقم المسلسل الخاص بأي حرف مثال 1: الكود التالي يوضح مثال بسيط لكيفية الحصول علي الرقم المسلسل الخاص بحرف الياء التي تحتها نقطتان PHP كود : Dim c As Char = "ي"cPHP كود : Dim c As Char = "ء"cمن الأمثلة أعلاه ستكتشف ان الرقم المسلسل بالحروف العربية يبدأ من الرقم 1569 , وينتهي بالرقم 1610 الملحوظة الهامة هنا هي أن الرقم المسلسل يبدأ دوما برقم هو الرقم 1 وفكرة التشفير في هذا الموضوع سوف تعتمد علي iهذا الرقم المسلسل الخاص بكل حرف و الفكرة يمكن تلخيصها في الخطوات التالية 1- تحديد الحرف 2- تحويل الحرف الي رقمه المسلسل في جدول الحروف 3- التخلص من الرقم 1 الذي تبدأ به الأرقام المسلسلة 4- أخير نحصل علي رقم هو عبارة عن تشفير بسيط لهذا الحرف الكود التالي يوضح كيفية تشفير اي حرف من حروف اللغة العربية و لقد كتبته علي هيئة دالة بحيث تمرر لها اي حرف من حروف اللغة العربية فتحصل مباشرة علي الرقم المشفر الذي يقابل هذا الحرف PHP كود : Private Function EncodeCahr(c As Char) As Integerالأن لنحاول أن نعيد هذا الرقم الي حرف Char مرة أخري و الخطوات التالية توضح ذلك 1- نقرأ الرقم المشفر 2- نقوم بتحويله الي String 3- نضيف عل يسار هذا String الرقم 1 4- نقوم بتحويل String الي رقم مرة أخري 5- أخيرا نقوم بتحويل الرقم الي Char الكود التالي يوضح كيفية فك التشفير ولقد كتبته أيضا علي هيئة دالة بحيث تمرر لها الرقم فتحصل علي الحرف الأصلي PHP كود : Private Function DecodeChar(value As Integer) As Charالأن عزيزي القارئ حاول أن تمرر الرقم المشفر الذي حصلت عليه من الدالة الأولي أعلاه و لتري ماذا سيحدث معك من المؤكد ان الهدف من الموضوع هو ليس تشفير حرفا واحدا من الحروف العربية لكن الهدف هو تشفير كلمة مكتوبة باللغة العربية الكود التالي عبارة عن دالة تمرر لها الكلمة المكتوبة بأحرف عربية فتحصل علي String هو عبارة عن تشفير لهذه الكلمة و الفكرة تنحصر باننا نقوم بعمل Loop علي كل حرف موجود في الكلمة العربية و نحول كل حرف في الكلمة الي رقم ثم نقوم بدمج تلك الأرقام بعد أن نضيف فراغا بينها و نحولها الي String PHP كود : Private Function EncodeString(s As String) As Stringعملية فك التشفير هي عملية عكسية نأخذ String المشفر و نقوم بعمل Loop علي كل حرف ثم نتخلص من الفراغات بين الأرقام ثم نقوم بتحويل الأرقام الي حروف مرة أخري و الكود التالي يوضح شكل الدالة PHP كود : Private Function DecodeString(s As String) As Stringالكود التالي يوضح كيفية التشفير و فك التشفير PHP كود : Dim encoded As String = EncodeString("عمر")أتمني ان يكون الموضوع مفيدا للبعض منكم ان شاء الله وفي موضوعات لاحقة سأحاول أن أتخلص تماما و أقلل من الإعتماد علي دوال ميكروسوفت المستخدمة في أي كود أعلاه RE: مقدمة الي تشفير الحروف الأبجدية العربية - abdalamask - 23-04-17 ممكن طلب رسم سهم هذا كود رسم lad Imports System Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) MyBase.OnPaint(e) e.Graphics.SmoothingMode = SmoothingMode.AntiAlias Dim g As Graphics = e.Graphics Dim pointF As New PointF(CSng(Me.Width) / 2F, CSng(Me.Height) / 2F) Dim num1 As Single = Math.Min(pointF.X, pointF.Y) Dim num2 As Single = CSng(CDbl(num1) * 65.0 / 100.0) Dim num3 As Single = CSng(CDbl(num1) * 55.0 / 100.0) Dim num4 As Single = CSng(CDbl(num1) * 45.0 / 100.0) Dim _Brush As Brush = CType(New LinearGradientBrush(New Point(CInt(Math.Truncate(CDbl(pointF.X) - CDbl(num2))), CInt(Math.Truncate(CDbl(pointF.Y) - CDbl(num2)))), New Point(CInt(Math.Truncate(CDbl(pointF.X) + CDbl(num2))), CInt(Math.Truncate(CDbl(pointF.Y) + CDbl(num2)))), Color.WhiteSmoke, SystemColors.ControlDarkDark), Brush) g.FillEllipse(_Brush, pointF.X - num2, pointF.Y - num2, 2F * num2, 2F * num2) _Brush.Dispose() If Me._Value Then Dim path As New GraphicsPath() path.AddEllipse(pointF.X - num1, pointF.Y - num1, num1 * 2F, num1 * 2F) Dim pathGradientBrush As New PathGradientBrush(path) pathGradientBrush.CenterColor = Color.FromArgb(150, CInt(Math.Truncate(Me.OnColor.R)), CInt(Math.Truncate(Me.OnColor.G)), CInt(Math.Truncate(Me.OnColor.B))) Dim colorArray() As Color = { Color.FromArgb(1, CInt(Math.Truncate(Me.OnColor.R)), CInt(Math.Truncate(Me.OnColor.G)), CInt(Math.Truncate(Me.OnColor.B))) } pathGradientBrush.SurroundColors = colorArray g.FillEllipse(CType(pathGradientBrush, Brush), pointF.X - num1, pointF.Y - num1, num1 * 2F, num1 * 2F) path.Dispose() pathGradientBrush.Dispose() End If Dim brush2 As Brush = CType(New LinearGradientBrush(New Point(CInt(Math.Truncate(CDbl(pointF.X) - CDbl(num3))), CInt(Math.Truncate(CDbl(pointF.Y) - CDbl(num3)))), New Point(CInt(Math.Truncate(CDbl(pointF.X) + CDbl(num3))), CInt(Math.Truncate(CDbl(pointF.Y) + CDbl(num2)))), SystemColors.ControlDarkDark, Color.WhiteSmoke), Brush) g.FillEllipse(brush2, pointF.X - num3, pointF.Y - num3, 2F * num3, 2F * num3) _Brush.Dispose() Dim gp As New GraphicsPath() gp.AddEllipse(pointF.X - num4, pointF.Y - num4, 2F * num4, 2F * num4) If Me._Value Then Dim pathGradientBrush As New PathGradientBrush(gp) pathGradientBrush.CenterColor = Color.WhiteSmoke Dim colorArray() As Color = { Me.OnColor } pathGradientBrush.SurroundColors = colorArray pathGradientBrush.CenterPoint = New PointF(pointF.X - num4 / 2F, pointF.Y - num4 / 2F) g.FillEllipse(CType(pathGradientBrush, Brush), pointF.X - num4, pointF.Y - num4, 2F * num4, 2F * num4) pathGradientBrush.Dispose() Else Dim pathGradientBrush As New PathGradientBrush(gp) pathGradientBrush.CenterColor = Color.WhiteSmoke Dim colorArray() As Color = { Me.OffColor } pathGradientBrush.SurroundColors = colorArray pathGradientBrush.CenterPoint = New PointF(pointF.X - num4 / 2F, pointF.Y - num4 / 2F) g.FillEllipse(CType(pathGradientBrush, Brush), pointF.X - num4, pointF.Y - num4, 2F * num4, 2F * num4) pathGradientBrush.Dispose() End If gp.Dispose() End Sub اريد رسم سهم بهذا الشكل RE: مقدمة الي تشفير الحروف الأبجدية العربية - Miloud - 12-10-21 PHP كود : Imports SystemRE: مقدمة الي تشفير الحروف الأبجدية العربية - flawer69 - 17-05-22 لدي سؤال : مامعنى الحرف c في هذا الكود Dim c As Char = "ء"c شكرا لكم |