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

لم ننتهي بعد من مشكلة اللغةالعربية؟!

بدأه joo في 13 يونيو 2008 · 29 رد · 3,168 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام

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

Window-1256

And mysql collation 1256…

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

يعني شو لازم حط

Charechter set of table , and the collation of each record enside it ,AND collation of database

ويا ريت في حال كان في شخص عنده معلومات كافية ووافيه فيما يتعلق بنمط صفحات بي ا شبي وتراميز جداول المعطيات التي تتوافق مع هذه الصفحات , انو يلخص معلوماته ويثبتها ببند ثابت في المنتدى , لانو بتخيل انو هي من اكبر المشاكل واكثرها ازعاجا وتواجه اغلب المبرمجين الجدد في هذا المجال

وانا انتظر بفارغ الصبر جوابكم حتى استطيع اتمام عملي ولكم جزيل الشكر مسبقا

Note: the pages encoding is utf8 and i can't change it

,والسلام عليكم

#2

في منطقة الرأس ضع الآتي :

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

mysql_query("set character_set_server='cp1256'");
mysql_query("set names cp1256");

ضعها قبل أي إستعلام .

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

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#3

السلام عليكم

الاخوان الكرا انا تواجهني نفس المشكلة ولكن بغير طريقة

انا تمكنت من حل مشكلة اللغة العربية بحيث وضعت ترميز الجدول وحقول الجدول utf8_general_ci

ولكن المشكلة انو بقيت بعض المحارف لا تعمل متل حرف الفاء او مثلا متل حفظ كلمة انشائية

ولقد جربت حل الاخ SIFE ولم يعمل

نرجو منكم مساعدتنا في هذه المشكلة الصعبة التي لا أعرف اين ابحث لها عن حل

واسف للاطالة

تعليق بسيط ايضا

صفحة الويب أيضا من النمط utf-8

ولاوضح اكثر المشكلة

عند قيامي بحفظ كلمة تكهفات فرضا فانها تحفظ هكذا تكهئات

يعني يبدل الفاء بالهمزة

ومثلا لدى حفظ كلمة انشائية عندها يحفظها هكذا انشا؟ية

يعني مشكلة بحق

#4

يا أخى الحل الوحيد أن تنسى من الآن الشىء العتيق القاصر المسمى windows-1256

اتجة الى ال Standards و استخدم ال UTF-8 وحتنسى مشاكل كتير

#5

أنا لى و جه نظر أخرى أخى :) ASDen

عند إستخدام UTF8 سوف تتضاعف المساحة فى قاعده البيانات و مساحة الملفات و الذاكرة أيضاً فلا داعى لإستخدامها إلا إذا كان الموقع سوف يدعم أكثر من لغة أما إذا كان سيدعم اللغة الإنجليزية و لغة أخرى مثل العربى فيجب إستخدام cp1256 حتى يتم تقليل المساحة.

----------------------------------------

للتعامل مع cp1256 يجب أن يكون نظام الملفات ASCII كما يجب و ضع سطر الكود الذى أشار له أخى SIFE داخل تاج <head>

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

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

SET NAMES 'cp1256'

فسطر SQL هذا كافى لتغيير character_set_client و character_set_results و character_set_connection إلى Character الذى تم تحديده و هو cp1256

أما إذا كنا نريد التعامل مع UTF8 فيجب أن نغير windows-1256 إلى utf-8 كما يجب أن يكون Encoding للصفحات utf8 و لكن يدون BOM و هنا يتم مضاعفة الحرف إذا احتاج الأمر لذلك

BOM تعنى Byte Order Mark

و لإنشاء هذا النوع من الصفحات قم بإستخدام احدى المحررات القوية مثل Notepad++ و إذا كنت تعمل على لينوكس فـ gEdit يكفى و زياده حبتين :D

بهذا الاسلوب لم تواجه أى مشكلة مع العربى أو أى لغة أخرى يدعمها MySQL

---------------------

أخى joo

إذا كان Character الخاص بقاعده البيانات هو cp1256 و كنت تريد إبقائة كما هو و لكن صفحاتك UTF8 و تريد إبقائها كما هى فيجب أن تعمل على تحويل cp1256 إلى utf8 و العكس أيضاً و ذلك بواسطة المكتبة iconv و هذا مثال عليها

iconv("windows-1256", "UTF-8", "النص المراد تحويلة");

أكيد المكتبة دى مدعمة فى السرفر إللى انت حجزة

تم تعديل هذه المشاركة بواسطة asm-soft في 14 يونيو 2008 في 07:15

forum-signature-01.gif
#6

---------------------

أخى joo

إذا كان Character الخاص بقاعده البيانات هو cp1256 و كنت تريد إبقائة كما هو و لكن صفحاتك UTF8 و تريد إبقائها كما هى فيجب أن تعمل على تحويل cp1256 إلى utf8 و العكس أيضاً و ذلك بواسطة المكتبة iconv و هذا مثال عليها

iconv("windows-1256", "UTF-8", "النص المراد تحويلة");

أكيد المكتبة دى مدعمة فى السرفر إللى انت حجزة

#7

اخواني الكرام أشكر لكم الرد

ولكن أرجو لو ترفعوا لي مثال صغير مع ملف لقاعدة البيانات عندكم .sql

وملف بي اتش بي فيه ادخال داتا واخراجها

أعتذر لطلبي الساذج

بس صدقوني انو ما اشتغل عندي cp1256 ولا بشكل

وال utf8 اشتغل فقط ولكن مع اخطاء كثيرة في الترميز ذكرتها فيما سبق

وأشكر لكم سعة صدركم

#8

شكرا الك

asm

مشي حال الطريقة يلي عطيتني ياها , ما بتعرف اديش وفرت علي وجع راس بحلك

شكرا مرة تانية , والله يديمك ذخر للمنتدى

سلام

danyowen كتب:
اخواني الكرام أشكر لكم الرد

ولكن أرجو لو ترفعوا لي مثال صغير مع ملف لقاعدة البيانات عندكم .sql

وملف بي اتش بي فيه ادخال داتا واخراجها

أعتذر لطلبي الساذج

بس صدقوني انو ما اشتغل عندي cp1256 ولا بشكل

وال utf8 اشتغل فقط ولكن مع اخطاء كثيرة في الترميز ذكرتها فيما سبق

وأشكر لكم سعة صدركم

سلام , انا بدي اطلب منك انو تحط مثال على utf8 لانو هدا يلي ما اشتغل معي ولا باي شكل ولا حتى مع اخطاء , نهائيا ما اشتغل , فياريت تحط المثال يلي اشتغل

معك مع اخطاء, لانو بدي شوف كيف اشتغل , وانا ان شاء الله عن قريب لما افرغ شوي رح نزلك المثال يلي اشتغل معي

سلام

#9

استفسار هام جدا

هل يا ترا ترميز cp1256 بيدعم اللغة الفارسية

لانو الموقع يلي عم برمجة بيطلب 3 لغات (عربي و انكليزي وفارسي )

فاذا ما كانت بتدعم وقتها صار عندي مشكلة جديدة

#10

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

forum-signature-01.gif
#11

السلام عليكم

شكرا للاخوان الجميع على الرد على الموضوع

مشي حال طريقة ال cp 1256 معي ولكن المشكلة في العربي الان عند التعامل مع اجاكس

اي اني لما بحضر صفحة ال php من غير استعمال اجاكس يظهر العربي العربي بدون اي مشاكل ولكن عند احضارها

عن طريق اجاكس تظهر اشارات الاستفهام ولا أدري ما يحصل

بالنسبة للأخ joo

مشان ال utf8

اذا بدك يشتغل بدك تخلي الصفحة ترميزها utf8 اكيد طبعا

وانتبه عند انشاء قاعدة البيانات ان يكون ايضا ترميزها يونيكود جينيرال والجدول المطلوب ايضا يونيكود جينيرال

وذلك قبل حتى انشاء اعمدة الجدول التي اكيد يجب ان تكون يونيكود جينيرال

ثم اذا واجهت مشاكل لا تنسى ان تقوم ب

mysql_query('SET NAMES 'utf-8');

وذلك بعد الاتصال بقاعدة البيانات

#12

طيب رجاء خاص حطولنا مثال شغا ل على قاعدة معطيات UTF8 مع ملفات بي اش بي UTF8 وبتعرض من قاعدة المعطيات متل العالم والناس ,

كل يلي بدي ياه هو مثال بسيط جدا , لانو جربت هي الطريقة مع قاعدة معطيات UTF8 وما اشتغلت , وان شاء الله عن قريب رح حط تجاربي الفاشلة مشان تشوفوها

ياريت تردوا بالمساعدة باقرب وقت ممكن

سلام

#13

للأسف الهارد ديسك حالياً مش شغال كويس وبحاول أرجع الداتا منه :(

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

#14

الاخ joo اليوم رح حطلك مثال شغال على ال utf8

بس انا مو بالبيت حاليا

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

#15

لآسف مردتش من فترة

---

@asm حتى لو كانت هناك مشكلة فى المساحة فهذا الموضوع محسوم عالميا امشى مع ال Standard أقل ناس بتلاقى مشاكل و أكتر ناس بتحصد مزايا هما اللى معا ال Standard

وأى موقع مسيرة يكبر ويحتاج تعدد اللغت فلية مش من الآول هذا أيضا مع تحفظى على موضوع ان ال UTF-8 سيهدر مساحة

@joo الأول لازم تحول قاعدة البيانات اللى عندك ل UTF-8 وبعد كده لو الموضوع ممشيش حط محاولاتك

@dany الحل كما ذكرت فى اتباع ال Standards لو الموقع كلة شغال UTF-8 لن تعانى أى مشاكل مع ال Ajax

#16

لكل الأخوان الذين يعانون من مشاكل باللغة العربية أو لغات تانية غير الإنجليزية إليكم مجموعة خطوات إذا اتبعتموها لن تواجهوا مشاكل بإذن الله:

1- ملف httpd.conf يجب أن يحتوي على السطر التالي

AddDefaultCharset UTF-8

لكي يكون السيرفر مضبوطاً على ترميز UTF-8 ، وفي كثير من الأحيان تجدون الترميز التالي

ISO-8859-1 وهو مشهور بترميز ال Latin إذا وجدتوه احذفوه وضعوا ترميز UTF-8

2- الملفات يجب أن تحفظ كـ UTF-8 والافتراضي في الويندوز أن يحفظها كـ ANSI انتبهوا جيداً وهذه صورة للمشكلة:

utfjd1.jpg

3- إضافة الهيدر المناسب لكل صفحة

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

4- الانتباه عند إنشاء داتا بيز أن تكون UTF-8، وكل الحقول النصية أيضاً (عند إنشاء كل حقل):

dbsg2.jpg

phpmyadmin يعطيك ثلاثة تراميز قياسية:

utf8_bin

utf8_unicode_ci

utf8_unicode_cs

وجميعهم تجدهم في القائمة أما عن ظائفهم فهي تختلف حسب تصميمك للداتا بيز ...

أتمنى أن يكون الشرح وافياً

تم تعديل هذه المشاركة بواسطة خالد_الحوراني في 16 يونيو 2008 في 18:16

#17

اخواني الكرام انا مع استعمال ال utf8

ولكن المشكلة اللي خلتني الجأ لل cp-1256 انو في الutf8 بعض الاحرف متل الفاء او الهمزة تظهر كرموز

واما من ناحية التنسيق والاجاكس ولا أحلى

واما ال cp1256 مالو مشاكل الا مع اجاكس

اسف على الالحاح على الموضوع مع الشكر الجزيل

#18

لو يسمعوك جماعة utf8 كانوا انتحروا :D

أخي الكريم الغلط من إعداداتك وليس من الترميز فهو مستخدم بكل العالم !!!!!

#19

الاخ الكريم joo

ارجو ان تشاهد المرفقات

انها صفحة بي اتش بي تعمل ادخال على قاعدة البيانات وعرض لبيانات من قاعدة البيانات

ملف قاعدة البيانات مرفق فقط عملية import

أرجو ان تعلق على النتائج في أقرب وقت ممكن

عفوا عفوا أقصد الاخ خالد الحوراني

ولو ممكن تضع لي مثال بسيط على يونيكود مع نص عربي طويل

أكون لك من الشاكرين

وربنا يوفقك

arabteam.rar

#20

أخي الكريم الملف عندك كان محفوظ بتنسيق ANSI ، ملف index.php

بس أعدت تنسيق الصفحة قليلاً كي يصبح التنسيق أفضل وفي المرات القادمة حاول تسمية المتحولات بأسماء لها معنى :S

بالمناسبة $i <= $cnt مش $i < $cnt

شوف المرفقات والصورة:

utfcz9.jpg

ملاحظة: إذا لم يعمل المثال تأكد من أنك نفذت جميع ملاحظاتي في الرد السابق

utf8.rar

#21

سلام

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

نزلت اليوم الامثلة يلي حطيتوها ورح جربها وردلكم خبر عنها , مشكورين كتير

ورح ارفق مع هذه الرسالة تجربتي , وهي ببساطة ملف داتا بير فوموا باستيراده

وملفي كونفيغ وملف يعرض المعلومات من قاعدة العطيات على الشاشة , ولكم جزيل الشكر

this_is_my_failer_experiment.rar

#22

أخ نور في عندك كم خطأ:

1- الخطوة 4 من الخطوات التي ذكرتها لم تنفذها فقط كانت الداتا بيز بتنسيق latin وليس utf8

2- تعريف الثوابت يكون:

define("HOST", "localhost");

وليس

define(HOST, "localhost");

3- اختيار عنصر من مصفوفة يكون:

$row['name']

وليس

$row[name]

4- كيف تم إدخال البيانات ؟؟؟! يجب أن تصنع صفحة لإدخال البيانات ... شاهد المثال الذي وضعته في ردي السابق

أي لا تدخل بياناتك من برنامج phpmyadmin بل أدخلها من صفحة خاصة تصنعها بنفسك

#23

أخي خالد الحوراني

مشكور كتير كتير على الرد وبالفعل المشكلة كانت انو الملف مو utf8

الله يقدرنا على رد جميلك

ولا تواخذني عالكود تبعي لانو مبارح كنت ميت من التعب انا وعم اكتبه

مرة أخرى شكرا لك و فرج الله كربك وكروب جميع المسلمين

#24

مافي مشكلة بس دعوة صالحة منك أخي الكريم بتكفي ... ومن لهجتك مبين سوري (من سوريا) :D

وانتبه عند إنشاء ملف جديد في ويندوز (زر يميني - ملف نصي جديد) أن الملف الذي ينشئه يكون بصيغة ANSI لذلك أبقي عندك ملف نصي فارغ utf8 وانسخه بدل إنشاء ملف نصي من الويندوز

وخليك معنا بالمنتدى على طول

#25

سلام خالد , وسلام لداني اوين

شكرا كتير لجهودكم واستمراركم بالتواصل معي لحل مشكلتي وشكرا لكل الموجودين بالمنتدى

بالفعل يا خالد , ما غيرت شي بكودي , بس صرت دخل المعطيات في قاعدة المعطيات عبر الموقع نفسه , ومو عن طريق اي توول تانية

ومشي الحال بالفعل , على مايبدو , انو الادخال مباشرة في الداتا بير كان عم يحفظ الداتا بغير صيغة

بس هلأ في عندي تساؤلين

1: من قبل كان المعطيات لما اعرضها على الموقع عم تطلع مفشكلة (لما كنت عم دخل مباشرة في قاعدة المعطيات ) بس لما كنت روح شوف الجداول كنت شوف القيم طبيعية , مقروءة من قبل

العنصر البشري, بس هلأ لما صرت دخل عن طريق الموقع , انحلت مشكلة الاظهار على الموقع , بس لما رحت شفت الجداول , الله لا يورجيك شو شفت , عم يحفظ المعطيات باللغة اليابانية او الرمزية او ماشابه , المهم شي ما له مقروء نهائياُ ,’ فيا تر شو عم يصير بهالعالم , ؟؟؟

2:بالنسبة للملاحظات يلي قلتلي عليها , بس بدي افهم منك ليش غلط ؟ مع انها شغالة تمام وعين الله عليها

وشكرا كتير الك , والله يوفقك بامتحاناتك وان شاء الله تطلع الاولي على الكلية

سلام

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