مشكلة في ترميز اللغة العربية بين C#.net و Nusoap

أرسل من قبل moneer.info في السبت, 2008/08/09 - 10:25am.

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

السلام عليكم
عندي مشكلة و بتمنى اذا حدا بيقدر يساعدني بأي فكرة ما يقصر
أقوم بكتابة تطبيق محلي بلغة C#.net سوف يتصل هذا التطبيق مع قاعدة بيانات MYSQL موجودة على السيرفر و ذلك من خلال خدمة ويب web service بلغة ابي اتش بي .. (nusoap ) موجودة على السيرفر نفسه ... المهم الاتصال بين التطبيق وقاعدة البيانات نجح في احضار بيانات عربية من قاعدة البيانات و لكن ادخال بيانات عربية عبر التطبيق الى قاعدة البيانات و من ثم استعادتها يعطي رموز غريبة ؟؟؟؟؟(اشارات استفهام ) أي أن الاتصال بين C# و mysql عبر ال nusoap نجح فقط في استعادة بيانات عربية مدخلة بشكل صحيح (اما عبر php أو عبر phpmyadmin) أما البيانات العربية المدخلة من خلال التطبيق فانها لا تظهر عند استعادتها بشكل صحيح أي ان الادخال عبر التطبيق لبيانات عربية يفشل أي الاتصال بين C# و my sql نجح باتجاه و احد فقط و هو استعادة بيانات عربية موجودة بالأصل في قاعدة البيانات و مدخلة من خلال مكان أخر غير التطبيق ..
أما الاتصال المباشر بين php و mysql نجح في ادخال و استعادة البيانات العربية ..بعرف انو اسهبت في الشرح زيادة بس ان شاء الله اكون قدرت أوصل الفكرة صح و تقدروا تفهموا علي و تساعدوني
هلأ انا بعرف انو المشكلة مشكلة ترميز UTF-8و انو المشكلة عمتكمن بالاتصال بين c# و ال php nusoap و ليست بين php و mysql أي البيانات العربية تصل مشوشة بالأساس الى php والتي تقوم بدورها بنقلها على حالتها المشوهة الى mysql بس شو الحل ....
طيب و اذا مامشي الحال حدا بيعرف شي مكتبة مشابهة لعمل ال nusoap و بلغة البي اتش بي و لا مارح استفيد شي باعتبار انو مشكلة اللغة العربية رح تبقى موجودة نفسها اذا استخدمت شي تاني غير ال nusoap باعتبار انو بالبي اتش بي ..أو برأيكم أبدل تطبيق ال c# بتطبيق جافا باعتبار انو الجافا و البي اتش بي open source و ممكن يتوافقوا مع بعض أكتر ..و لا استغني نهائيا عن خدمة الويب و اعمل قاعدة بيانات تانية محلية تتصل مباشرة مع التطبيق وا عمل لها مزامنة كل فترة مع قاعدة البيانات الموجودة على السيرفر و لا شو ؟؟...طيب اذا في شي حلول تانية بتقترحوها أو فكرة ممكن تطرحوها هون و نتناقش فيها و شكرا الكم كتير

 
دخول أو تسجيل لإرسال التعليقات | قراءة: 195

خيارات عرض التعليقات

اختر طريقتك المفضلة لعرض التعليقات و اضغط "حفظ الإعدادات" لتفعيل تغييراتك.
السبت, 2008/08/09 - 10:34am
مشرف
صورة mpcabd

تاريخ التسجيل: 2006-02-19
مشاركات: 2655

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثالثة

أنت عمتربط الـ #C مع Php Web Service لأنك ما قدرت توصل الـ #C عالـ MySql؟ إذا هيك لي مساويه في Add-On للـ Visual Studio اسمها MySql Connector بتخليه يصير يتصل بالـ MySql كأنها Sql Server.
أما إذا مو هيك يلي مساويه ومضطر تتصل بالـ Web Service فالمشكلة يلي عندك هي مشكلة Encoding بدك تدور عالمكان يلي محدد فيه الـ Encoding تبع الاتصال وتخليه UTF-8.

يجب علينا في ظل هذه الظروف الصعبة, أن نقف جميعا ً, صفا ً واحدا ً ...... أمام الفرن
I am a Muslim

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 10:46am

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

شكرا عالرد أخ عبد الله لأ مو هيك القصة أنا مضطر لاستخدام خدمة الويب و لا استطيع الاتصال بشكل مباشر لان التطبيق سوف يكون موجود على أجهزة الشركة و قاعدة البيانات موجودة على سيرفر الاستضافة على الويب ..ماشي ...

طيب اذا نحن متفقين انو مضطر لاستخدام خدمة الويب لتحقيق الاتصال عن بعد
مننتقل للنقطة التانية و هون المشكلة انو عرفان انها مشكلة encoding و رحت على app.config و ال configuration.svcinfo و ال Reference.svcmap و ال ws.wsdl و تأكدت انو ال <?xml version="1.0" encoding="utf-8"?>
موجودة يعني الترميز تبع الاتصال صحيح و ما مشي الحال ؟؟؟؟

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 10:54am

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

طيب و هلأ رح احط المحاولات و الأمور اللي جربتها و ما نجحت :
بعد فتح الاتصال بين البي اتش بي و ال ماي سيكوال و ضعت
$sql333=" set names 'utf8' ";
mysql_query($sql333,$con);

mysql_query("SET character_set_client = utf-8");
mysql_query("SET character_set_results =utf-8");
mysql_query("SET character_set_connection =utf-8");
و ان نوع قاعدة البينات يدعم UTF-8
و كذلك وضعت
$server->soap_defencoding = 'UTF-8';
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');

mb_language("Arabic");

mb_http_input ('UTF-8');
في نهاية ال nusoap code
و لم تنجح كلها فهل هناك حلول أخرى

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 10:55am
مشرف
صورة mpcabd

تاريخ التسجيل: 2006-02-19
مشاركات: 2655

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثالثة

معناتها الخطأ بالـ Web Service بتكون هي مو محدد أنو تتصل UTF-8, إذا بتقدر توصللها وتتأكد منها جرب, وإذا ما بتقدر جرب تساوي صفحة Php تتصل عالـ Web Service وشوف إذا العطل من إتصال الـ NET.

يجب علينا في ظل هذه الظروف الصعبة, أن نقف جميعا ً, صفا ً واحدا ً ...... أمام الفرن
I am a Muslim

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 11:23am
صورة bayrn

تاريخ التسجيل: 2008-03-05
مشاركات: 801

الجامعة: الافتراضية
الكلية: تكنولوجيا المعلومات
المرحلة: السنة الرابعة
الاختصاص: غير ذلك

UniCodeEncoding

 

قرأتُ مجدَكِ في قلبي و في الكُتُـبِ         شَـآمُ ، ما المجدُ؟ أنتِ المجدُ لم يَغِبِ

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 11:22am

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

كتب mpcabd:
معناتها الخطأ بالـ Web Service بتكون هي مو محدد أنو تتصل UTF-8, إذا بتقدر توصللها وتتأكد منها جرب, وإذا ما بتقدر جرب تساوي صفحة Php تتصل عالـ Web Service وشوف إذا العطل من إتصال الـ NET.
تأكدت من انو ال wsdl فعلا معتمدة تشفير utf-8
<?xml version="1.0" encoding="utf-8"?>

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 11:24am

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

كتب bayrn:
UniCodeEncoding obj = new UniCodeEncoding

ممكن توضح اكتر ..
ال String data type في .NET هو unicode بشكل افتراضي

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 11:34am
صورة bayrn

تاريخ التسجيل: 2008-03-05
مشاركات: 801

الجامعة: الافتراضية
الكلية: تكنولوجيا المعلومات
المرحلة: السنة الرابعة
الاختصاص: غير ذلك

أخي مشكلتك هي في التطبيق C# بحيث أنه أنت لما تدخل بيانات من خلال التطبيق الى القاعدة عم تتخزن بالشكل ( ????? )

افتراضيا في C# الترميز ASCII أنا مجربها بتطبيق نقل نص من جهاز لآخر عبر الشبكة و كان يصل النص يللي عم ابعتو بالعربي من الجهاز الى الآخر ????????????

استخدمت الصف UniCodeEnoding يللي بيرمز جميع لغات العالم على حد علمي و مشي الحال

 

قرأتُ مجدَكِ في قلبي و في الكُتُـبِ         شَـآمُ ، ما المجدُ؟ أنتِ المجدُ لم يَغِبِ

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 11:42am
صورة bayrn

تاريخ التسجيل: 2008-03-05
مشاركات: 801

الجامعة: الافتراضية
الكلية: تكنولوجيا المعلومات
المرحلة: السنة الرابعة
الاختصاص: غير ذلك

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

و الله أنا نسيت اسم المنهج بس يعني هو من الاسم بيبين معك

 

قرأتُ مجدَكِ في قلبي و في الكُتُـبِ         شَـآمُ ، ما المجدُ؟ أنتِ المجدُ لم يَغِبِ

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 11:43am

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

كتب bayrn:
أخي مشكلتك هي في التطبيق C# بحيث أنه أنت لما تدخل بيانات من خلال التطبيق الى القاعدة عم تتخزن بالشكل ( ????? )

افتراضيا في C# الترميز ASCII أنا مجربها بتطبيق نقل نص من جهاز لآخر عبر الشبكة و كان يصل النص يللي عم ابعتو بالعربي من الجهاز الى الآخر ????????????

استخدمت الصف UniCodeEnoding يللي بيرمز جميع لغات العالم على حد علمي و مشي الحال

شكرا الك عالرد .. بجرب ال UniCodeEnoding و برد لك خبر ..

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 4:56pm

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

السلام عليكم
الحمد لله مشي الحال استخدمت الاجرائية التالية لتشفير المعلومات
المرسلة الى خدمة الويب و بذلك تم حل المشكلة شكرا لكل من حاول
المساعدة
public static string unicode_code(string src, string code)
{
Encoding iso = Encoding.GetEncoding(code);
Encoding unicode = Encoding.UTF8;
byte[] unicodeBytes = unicode.GetBytes(src);
return iso.GetString(unicodeBytes);
}

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2008/08/09 - 5:59pm
صورة bayrn

تاريخ التسجيل: 2008-03-05
مشاركات: 801

الجامعة: الافتراضية
الكلية: تكنولوجيا المعلومات
المرحلة: السنة الرابعة
الاختصاص: غير ذلك

مبروك هي أسهلك

(  public void Connect ( string ss

byte[] buf = new byte[1024

 ;( ) UnicodeEncoding coding = new UnicodeEncoding  

; ( buf = coding.GetBytes(ss

 

قرأتُ مجدَكِ في قلبي و في الكُتُـبِ         شَـآمُ ، ما المجدُ؟ أنتِ المجدُ لم يَغِبِ

 
دخول أو تسجيل لإرسال التعليقات
الأحد, 2008/08/10 - 5:11pm
صورة bayrn

تاريخ التسجيل: 2008-03-05
مشاركات: 801

الجامعة: الافتراضية
الكلية: تكنولوجيا المعلومات
المرحلة: السنة الرابعة
الاختصاص: غير ذلك

كتب moneer.info:
السلام عليكم الحمد لله مشي الحال استخدمت الاجرائية التالية لتشفير المعلومات المرسلة الى خدمة الويب و بذلك تم حل المشكلة شكرا لكل من حاول المساعدة public static string unicode_code(string src, string code) { Encoding iso = Encoding.GetEncoding(code); Encoding unicode = Encoding.UTF8; byte[] unicodeBytes = unicode.GetBytes(src); return iso.GetString(unicodeBytes); }
بس تصحيح شغلة بسيطة هي اجرائية ترميز و ليس تشفير

 

قرأتُ مجدَكِ في قلبي و في الكُتُـبِ         شَـآمُ ، ما المجدُ؟ أنتِ المجدُ لم يَغِبِ

 
دخول أو تسجيل لإرسال التعليقات
الأحد, 2008/08/10 - 5:34pm

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

هي اجرائية encoding وترجمها للعربي متل ما بدك ماشي

 
دخول أو تسجيل لإرسال التعليقات
الأحد, 2008/08/10 - 5:39pm
صورة bayrn

تاريخ التسجيل: 2008-03-05
مشاركات: 801

الجامعة: الافتراضية
الكلية: تكنولوجيا المعلومات
المرحلة: السنة الرابعة
الاختصاص: غير ذلك

كتب moneer.info:
هي اجرائية encoding وترجمها للعربي متل ما بدك ماشي
لا أنا ما عم بحكي على ترجمتها للعربي ، هي مشكلة وقعنا فيها وقت مشروع التخرج

المهندس سألنا ترميز و لا تشفير !!!!! تصور

و طلعت ترميز

 

قرأتُ مجدَكِ في قلبي و في الكُتُـبِ         شَـآمُ ، ما المجدُ؟ أنتِ المجدُ لم يَغِبِ

 
دخول أو تسجيل لإرسال التعليقات
الأحد, 2008/08/10 - 6:30pm

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

أكيد هي ترميز و ليست تشفير لأنو التشفير اله اهداف و تقنيات و اساليب تانية ..
ولكن عند الترجمة الحرفية للكلمة قد يحدث هناك لبس و على كل مو مشكلة مي بيناتنا ..

 
دخول أو تسجيل لإرسال التعليقات
الأحد, 2008/08/10 - 6:43pm

تاريخ التسجيل: 2007-09-20
مشاركات: 18

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

عفوا أخي لا أعتقد أن الاجرائية التي وضعتها تقوم بالمطلوب
وهلأ لحتى تسنى لي الوقت للاطلاع عليها بتمعن
الاجرائية التي استخدمتها أنا تقوم بتحويل البيانات المرسلة الى قاعدة البيانات الى الترميز المستخدم في ال nusoap و التي تم بنائها أساسا عليه و هو "ISO-8859-1" و من ثم و في خدمة الويب يعاد تحويلها الى utf-8 حيث تدخل الى قاعدة البيانات بتلك الصياغة
أما في حالة الخرج فأنا تركت الترميز على حاله بدون أية تغيير
لأن ال البيانات بالأساس utf-8 و لم يحدث أي مشكلة في عرضها كما ذكرت في مشاركة سابقة
الاجرائية التي وضعتها انت مشكورا كانت قد تفيد في حالة اظهار الخرج بشكل صحيح لو لم يكن كذلك أو كانت تفيد في حالة كانت خدمة الويب تستخدم utf-8 أي ان اجرائيتك تفيد في التحويل الى unicode , وهو ما لا يلزمني في ارسال البيانات الى خدمة الويب التي لا تتعامل كما ذكرت مع ال unicode بالاساس بتمنى تكون وصلتك الفكرة

 
دخول أو تسجيل لإرسال التعليقات