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

اللغة العربية و استرجاع البيانات من اكسس

مغلق
بدأه محمد طاهر في 22 يناير 2003 · 15 رد · 1,363 مشاهدة · في منتدى تصميم صفحات الويب
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بعض الاسماء المكتوبة بالعربية فى قاعدة بيانات اكسس 2000

مخزنة علي موقع مجاني : brinkster

يتم استرجاعها بصورة سليمة و بعضها لا

أي أن البعض يظهر باللغة العربية سليما و البعض يظهر ؟؟؟؟؟

علما باني

جربت

<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">

<%@codePage=1256%>



و



<span lang=""ar-sa"">



</span>



و 



<span>

</span>

مع العلم باني عند تنفيذ جملة ال SQL من ال database manager

يتم اسنرجاع جميع البيانات التي لا تظهر فى صفحة ال asp بصورة سليمة

و تظهر البيانات التي ظهرت سليمة فى ال asp علي هيئة ؟؟؟؟

( أي عكس بعض )

و لكن فى الصفحة ال asp تظهر المشكلة

مع العلم أيضا بأن ذلك يحدث مع ويندوز اكس بي و وويندوز 98

#2

اعتقد اولله اعلم المفروض تكتب

<%@ Language=VBScript CodePage = "1256"%>
#3

لا نفس الشيء .. لكن المفروض أخ محمد طاهر ان تستخدم الوسمين السابقين كما ذكرت في كل الصفحات سواء الادخال او العرض ويفضل

وضعهما في ملف يضمن في كل صفحة عن طريق include ..

You can fly while you can touch the sky

#4

يبدو أن السبب فى المشكلة هو غياب التعليمات الخاصة بالعربية فى وقت ما أو أنني في وقت ما قمت بنتنزيل القاعدة و التعديل فيها ثم اعادة رفعها :(

و لكن المشكلة ليست الآن فى الادخالات الجديدة

المشكلة فى البيانات المسجلة بالفعل

فاذا أنشأت صفحة لاستعراض البيانات بدون تعليمتي العربية تظهر مثلا 40 بالمائة من السجلات سليمة و الباقي خرابيط

و اذا أضفت تعليمات العربية تظهر ال 60% الأخري سليمة و ال 40% الاولي خرابيط

فهل من وسيلة لاظهار ال 100% من البيانات سليمة فى صفحة واحدة أم هذا مستحيل :(:(

#5

المشكلة تكمن في ان الادخال لم يكن الـEncoding عربي ، تأكد من ذلك عن طريق تنزيل ملف الـDB الى جهازك ، ستجد ان البعض سليما والاخر ???

فأعانك الله (f)

#6

هي بالفعل كذلك

و قد قمت بتنزيلها و اعادة ادخل البيانات المخربطة

فالمشكلة مؤقتا قد حلت ، و مشكورين و الحمد لله أن حجم البيانات بسيط :rolleyes:

و لكن هل توجد دالة معينة مثلا أطبقها علي البيانات المخزنة بالفعل لتغيير ال encoding

لم أجد بالبحث فى المنتدي

#7

اذا كنت تقصد انه بعد الادخال ، فلا اعتقد انه يوجد شي كذلك ، لان الكلام اصبح ؟؟ وانتهى امره .

#8

نعم أقصد بعد الادخال

و ما يشجعنا علي تصور ذلك

هو أن الصفحات ال asp بدون اوسمة اللغة تكون قادرة علي قراءة البيانات

و ايضا ال database manager الخاص بالموقع نفسه

أم هذا بالتأكيد مستحيل ؟؟

#9

هل لليونيكود علاقة بالموضوع ؟؟

أي هل يمكن تخزين البيانات و استرجاعها علي هيئة يونيكود ؟؟ فيتم تلافي تلك المشكلة

أم لا علاقة لها بالموضوع ؟؟

#11

أكيد ممكن في حالة كون اليونيكود موحدا في الإدخال و الإخراج ..

و لم كل هذا أصلا؟؟؟؟؟ انت ادخل بياناتك عربية و استعرضها عربية وريحنا ;)

You can fly while you can touch the sky

#12
اقتباس
أكيد ممكن في حالة كون اليونيكود موحدا في الإدخال و الإخراج ..

كيف ؟؟

اقتباس
لم كل هذا أصلا؟؟؟؟؟ انت ادخل بياناتك عربية و استعرضها عربية وريحنا

من أجل المعلومة فى حد ذاتها ;)

#13

طريقة ادخال البيانات حسب اليونيكود العربي هي المذكورة أعلاه كوسم ال HTML و تعليمة ال ASP اللتان تجعلان الترميز عربيا 1256 ... طبعا ضع هذا الكود في صفحة الإداخل و صفحة العرض لن تجد أي مشكلة بإذن الله ..

You can fly while you can touch the sky

#14

كل شئ يتم داخل ال ASP يتم عن طريق Unicode أي جميع السلاسل وخلافه يتم التعامل معها بالunicode ..

ال CODEPAGE في صفحة ال ASP وظيفته فقط تحويل السلاسل من المستخدم إلى unicode عند استخدام Request وتحويل السلاسل من الASP إلى المستخدم عند استخدام Response..

بالنسبة لحالتك إذا كانت تظهر كل النصوص كاشارة استفهام ؟؟؟ هذا يعني أنه تم تحويل ال Unicode بصورة خاطئة .. ولكن بما أنك تستطيع قرائة العربي من database manager فهذا يعني أن العربي مسجل في الداتبيس بصروة صحيحة .. فالخوف كان أنه مسجل كاشارات استفهام فيها .. ويمكنك استخدام CODEPAGE آخر للغرض .. قد يكون 1252 أو غيره ..

في حالات يتم تخزين العربي في الداتابيس على أنه كود انجليزي وقد تكون هذه حالتك .. وهي الحالة مع كود ال MySQL .. يمكنك استخدام ال codepage 1252 لاظهاره ولكنك تفقد المدخلات الجديدة ..

الطريقة الوحيد هي تحويل البيانات بالداتا بيس كما ذكرت .. وبوجد العديد منها .. أحدها : (وهي في وندوز 2000 أو XP)

1) قم بتنزيل الداتابيس وتأكد من أنك تستطيع قرائتها .. (مثلا نزلها في Access)

2) قم بتحويل اعدادات الوندوز ليصبح ال default انجليزي .. وأعد الجهاز

3) الآن تستطيع قرائتها كما في السابق ولكن حين رفعنا إلى السيرفر سوف يتم تحويلها إلى عربي صحيح ..

الطرق الأخرى هي استخدام كود للتحويل.. ويجب أن تعرف جدول التجويل بينهما ..

قمت في السابق بصناعة كود تحويل .. بين 1252 واليونيكود .. أو بالأصح .. بين العربي unicode و الانجليزي .. العادي ..:

<script language=jscript runat=server>

function make_conv_array() {

	var myarray = new Array(256)

	var i

	for (i = 0; i < 256; i++)

  myarray = i

	myarray[161] = 1548

	myarray[186] = 1563

	myarray[191] = 1567

	myarray[193] = 1569

	myarray[194] = 1570

	myarray[195] = 1571

	myarray[196] = 1572

	myarray[197] = 1573

	myarray[198] =_1574

	myarray[199] = 1575

	myarray[200] = 1576

	myarray[201] = 1577

	myarray[202] = 1578

	myarray[203] = 1579

	myarray[204] = 1580

	myarray[205] = 1581

	myarray[206] = 1582

	myarray[207] = 1583

	myarray[208] = 1584

	myarray[209] = 1585

	myarray[210] = 1586

	myarray[211] = 1587

	myarray[212] = 1588

	myarray[213] = 1589

	myarray[214] = 1590

	myarray[216] = 1591

	myarray[217] = 1592

	myarray[218] = 1593

	myarray[219] = 1594

	myarray[220] = 1600

	myarray[221] = 1601

	myarray[222] = 1602

	myarray[223] = 1603

	myarray[225] = 1604

	myarray[227] = 1605

	myarray[228] = 1606

	myarray[229] = 1607

	myarray[230] = 1608

	myarray[236] = 1609

	myarray[237] = 1610

	myarray[240] = 1611

	myarray[241] = 1612

	myarray[242] = 1613

	myarray[243] = 1614

	myarray[245] = 1615

	myarray[246] = 1616

	myarray[248] = 1617

	myarray[250] = 1618

	return myarray

}

var conv_array = new make_conv_array

function ConvertAnsiToUnicode(str)

{

	var s = str + ""

	var res = ""

	var i

	for (i = 0; i < s.length; i++) {

  var code = s.charCodeAt(i)

  if (code >= 0 && code <= 255)

 	 code = conv_array[code]

  res += String.fromCharCode(code)

	}

	return res

}

function ConvertUnicodeToAnsi(str)

{

	var s = str + ""

	var res = ""

	var i, j

	for (i = 0; i < s.length; i++) {

  var code = s.charCodeAt(i)

  if (code >= 1548 && code <= 1618)

  {

 	 for (j = 161; j <= 250; j++) {

    if (conv_array[j] == code) {

   	 code = j

   	 break;

    }

 	 } 	 

  }

  res += String.fromCharCode(code)

	}

	return res

}

</script>

الكود هو jscript يمكن تشغيله من ال ASP .. ويستخدم التابعين ConvertAnsiToUnicode و ConvertUnicodeToAnsi ...

أرجو أن أكود قد أفدت ..

Coding on the Cloud and for the Cloud!

My Blog

#15

:) و الله ما فضل بعد هالكلاكم كلام .. فعلا مدير ;)

You can fly while you can touch the sky

هذا الموضوع مغلق.

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

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

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

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

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