الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أرجو حلا لمشكلة ترميز البيانات مع فيجوال بيسك نت

بدأه husam samra في 11 ديسمبر 2011 · 12 رد · 3,099 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

إخواني الكرام :

أنا أستخدم برنامج مصمم على Visual Basic .NET 2010 والبرنامج يقوم بالتخاطب مع قاعدة البيانات على الموقع عن طريق المكتبة mysql.data.dll

المشكلة أن إرسال البيانات من فيجوال بيسك إلى السيرفر (الموقع) عن طريق هذه الدالة يخل بترميز البيانات وتظهر الحروف العربية على شكل إشارات استفهام ?????? .

حاولت بكل السبل التي عثرت عليها ولم تفلح

غيرت ترميز قاعدة البيانات من لوحة تحكم الموقع / phpmyadmin ولم تنجح .

في حال إرسال تعليمات لقاعدة البيانات عن طريق صفحة ويب وتعليمات php ليس هناك أي مشكلة

المشكلة فقط عندما أرسل البيانات مباشرة من البرنامج عن طريق connection و أمر command الخاصين بالمكتبة المذكورة .

الموضوع ببساطة أنني أريد إرسال بيانات من تطبيق سطح المكتب إلى قاعدة البيانات على الموقع بشكل مباشر وليس عن طريق صفحة ويب .

فهل هناك من حل خاص بتطبيقات سطح المكتب وترميز البيانات ؟؟؟

ولكم الشكر الجزيل

#2

السلام عليكم ورحمة الله وبركاته.

اقتباس

المشكلة أن إرسال البيانات من فيجوال بيسك إلى السيرفر (الموقع) عن طريق هذه الدالة يخل بترميز البيانات وتظهر الحروف العربية على شكل إشارات استفهام ??????

قد يكون كود ترميز البيانات في المكتبة محدد بالاسكي

Encoding.ASCII.GetBytes(data)

((إِنَّ اللَّهَ وَمَلائِكَتَهُ يُصَلُّونَ عَلَى النَّبِيِّ يَا أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ وَسَلِّمُوا تَسْلِيمًا))

#3

السلام عليكم ورحمه الله وبركاته

اخي جرب الامر التالي

INSERT INTO YourTable(ColumnName) VALUES (_utf8'ColumnValue');

داخل الكائن Command

تم تعديل هذه المشاركة بواسطة VB Helper في 11 ديسمبر 2011 في 15:19

.:: Wish to become better and better ::.

#4

جزاكما الله كل الخير إخواني

لكن في الحقيقة لم يفلح الأمر

لا زالت البيانات تحفظ في قاعدة البيانات على شكل إشارات استفهام

وعند الاستعلام عنها من صفحة ويب تبقى كإشارات استفهام

أسأل الله لكم التوفيق والسداد ، وأن ييسر حل هذه المعضلة .

#5

السلام عليكم ورحمة الله وبركاته.

أخي هل غيرت كل الترميز -ان وجد- الذي بالاسكي الى utf8 ؟؟

Encoding.UTF8.GetBytes(data)
                'or
            Encoding.UTF8.GetString(data)

((إِنَّ اللَّهَ وَمَلائِكَتَهُ يُصَلُّونَ عَلَى النَّبِيِّ يَا أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ وَسَلِّمُوا تَسْلِيمًا))

#6

السلام عليكم ورحمه الله وبركاته

اخي قم بتعديل الحقل الذي تظهر قيمه على صورة ؟؟؟ بالامر التالي

ALTER TABLE [TableName] MODIFY [ColumnName] VARCHAR([Size]) CHARACTER SET UTF8;

.:: Wish to become better and better ::.

#7

إخواني الكرام - وفقكم الله - جزاكم الله خيرا كثيرا على الرد

أنا كل ما تقدمتم به فعلته .

وقد قرأت مقالا في هذا المنتدى عن نفس المشكلة وقد حلت مع كاتبها عن طريق التراسل مع مقدم خدمة الانترنت إذا كان إصداره قديما وقد حدثوه له

أنا سأحاول التواصل مع مزود الخدمة وأعود إليكم لأرى ما سيحصل .

والله الموفق .

#8

السلام عليكم ورحمه الله وبركاته

اخي انت مجرب قاعدة البيانات في جهازك ام في خادم ما؟!!

.:: Wish to become better and better ::.

#9

عليكم السلام ورحمة الله وبركاته

قاعدة البيانات MySql على خادم ويب أي على موقع إنترنت ، أنا أقوم بالاتصال بها عن طريق المكتبة mysql.data.dll إلى هنا كل شيء تمام

العميل لدي ، صاحب الموقع عنده عمل معين ويحتاج عمل تحديث بيانات الموقع بناء على بيانات تطبيق فيجوال بيسك عادي بضغطة زر ، فقمت بتصميم برنامج يعمل هذا الأمر ويخاطب قاعدة البيانات على الموقع ليتم تحديث المعلومات ، فكان كل شيء على ما يرام عدا أنه الحروف العربية في الموقع تظهر كعلامات استفهام ، وقد جربت ضبط ترميز قاعدة البيانات والحقول إلى utf8 ولم ينجح الأمر .

جزاك الله خيرا على المرور .

#10

السلام عليكم ورحمه الله وبركاته

اخي ستقول لي من بداية الموضوع, افتكرتها في جهازك, ما عليك الا التواصل من صاحب الاستضافة ليقوم بتفعيلها

> skip-character-set-client-handshake
> collation_server=utf8_unicode_ci
> character_set_server=utf8

.:: Wish to become better and better ::.

#11

جزاكم الله الجنة جميعا .

#12

السلام عليكم ورحمة الله وبركاته :

إخواني عند إرسال البيانات إلى موقع الإنترنت لحفظها في قاعدة بيانات mysql عن طريق مكتبة mysql.data.dll تم إرسال Command عادي عن طريق Connecvtion مفتوح.

المسألة أن البيانات كما ذكرت ترسل كلها كإشارات استفهام .

جربت تحويل النص من ASCII إلى Utf8 فتفاجأت أن النص ضمن البرنامج المصمم في vb.net يكون إشارات استفهام .

إذا فالنص لا يعود صالحا قبل إرساله إلى قاعدة البيانات على الموقع

فعمدت إلى الحل التالي :

أدخلت نصا في قاعدة البيانات وأخذت الرموز الظاهرة فكانت النتيجة التالية :

ابتثجحخدذرزسشصضطظعغفقكلمنهويأإآؤئىة

ÇÈÊËÌÍÎÏĞÑÒÓÔÕÖØÙÚÛİŞßáãäåæíÃÅÂÄÆìÉ

النص الأول هو النص المرسل والنص الثاني هو النص العائد ، فعملت Function لتحويل النص العربي إلى ترميز قبل إرساله إلى أمر mysql كالتالي :

    Friend Function ConvertAscToUtf8(ByVal Str As String)
        Dim NewStr As String = String.Empty
        For rCounter As Integer = 1 To Str.Length
            NewStr &= ReplaceChr(Mid(Str, rCounter, 1))
        Next

        Return NewStr
    End Function

    Private Function ReplaceChr(ByVal StrChar As String) As String

        Select Case StrChar
            Case "ا"
                Return "Ç"
            Case "ب"
                Return "È"
            Case "ت"
                Return "Ê"
            Case "ث"
                Return "Ë"
            Case "ج"
                Return "Ì"
            Case "ح"
                Return "Í"
            Case "خ"
                Return "Î"
            Case "د"
                Return "Ï"
            Case "ذ"
                Return "Ð"
            Case "ر"
                Return "Ñ"
            Case "ز"
                Return "Ò"
            Case "س"
                Return "Ó"
            Case "ش"
                Return "Ô"
            Case "ص"
                Return "Õ"
            Case "ض"
                Return "Ö"
            Case "ط"
                Return "Ø"
            Case "ظ"
                Return "Ù"
            Case "ع"
                Return "Ú"
            Case "غ"
                Return "Û"
            Case "ف"
                Return "İ"
            Case "ق"
                Return "Þ"
            Case "ك"
                Return "ß"
            Case "ل"
                Return "á"
            Case "م"
                Return "ã"
            Case "ن"
                Return "ä"
            Case "ه"
                Return "å"
            Case "و"
                Return "æ"
            Case "ي"
                Return "í"
            Case "أ"
                Return "Ã"
            Case "إ"
                Return "Å"
            Case "آ"
                Return "Â"
            Case "ؤ"
                Return "Ä"
            Case "ئ"
                Return "Æ"
            Case "ى"
                Return "ì"
            Case "ة"
                Return "É"
        End Select

        Return StrChar
    End Function

هذا الكود كما هو واضح يقوم بتحويل الترميز إلى ترميز يصلح لقاعدة البيانات وأرسل النص الناتج ، والنتيجة كما هو المطلوب تماما ، أي أن البيانات على الموقع أصبحت بهذه الطريقة صالحة .

لذلك :

1- أرجو من الإخوة إفادتي إن كان هناك طريقة أكثر احترافية لتحويل النص أو أي طريقة أخرى .

2- إن لم يكن هناك وكان أحد الإخوة يحتاج هذه الفكرة فنكون قد حللنا مشكلة قد تواجه الكثيرين منا .

ولكم الشكر الجزيل إخواني .

طبعا الكود أصبح في صفحة html غير صالح وهو في المرفقات

code.rar

تم تعديل هذه المشاركة بواسطة husam samra في 23 ديسمبر 2011 في 13:45

#13

لا اعتقد ان هذا بالفكرة الجيده بسبب ان يكون الخطء بسيط ويتم تصليحة مثلا من تحديثات الويندو بعد فتره وتجدة ان يرسل ترميز وليس النص الصحيح افضل ان تبحث اكثر عن حل

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…