| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| الترميز في ( MYSQL ) السلام عليكم ورحمة الله وبركاته قبل أن أبدأ في الدخول بموضوع ( مجموعات الترميز للـ MYSQL ) سأذكر بعض النقاط الأساسيه في الترميز بصوره عامه حتى تتضح الصوره الأساسيه التي ظهر من أجلها الترميز. الترميز بإختصار هو عباره عن إعطاء رمز لحرف من الحروف أو علامه من العلامات أو رقم من الأرقام. على سبيل المثال: لو كان لدينا الجمله التاليه: aBaD$1 فنقول مثلاً حرف a نرمز له بالرقم 1 والحرف B نرمز له بالرقم 2 والحرف D نرمز له بالرقم 3 والعلامه $ نرمز له بالرقم 4 والرقم 1 نرمز له بالرقم 5 فيصبح ترميز الجمله السابقه 121345 أكيد سيسأل السائل ويقول: ما الفائده من هذا الترميز للحروف وللأرقام؟ الجواب بسيط وهو لأن الكمبيوترات لا تعرف إلا الصفر والواحد ( النظام الثنائي ) لذلك نرمز لهذه الحروف بسلسله من الأرقام الثنائيه الصفر والواحد فقط حتى يفهم الكمبيوتر طلبنا بعد ذلك. أيضاً سيسأل السائل ويقول: ولكن في مثالنا السابق رمزنا للحروف بأرقام 121345 وأنت ذكرت بأن الكمبيوتر لا يفهم إلا الصفر والواحد؟ الجواب بسيط وهو أن لكل سلسله ثنائيه من الصفر والواحد(binary) لها مايقابلها بالسلسله العشريه [0-9](decimal) وكذلك السلسله العشريه لها مايقابلها بالسلسله السدس عشريه[0-9][a-f]ـ(hexdeciaml) لذلك إختصاراً لطول الرقم الذي سيكتب بالسلسله الثنائيه كتبناه بالنظام العشري في المثال السابق لكي تسهل علينا قراءة الرمز. الان بعد أن عرفنا الغايه التي وضع الترميز لأجلها دعونا نعرف ماهي الحروف التي سنرمز لها وماهي الأشكال والأرقام ..... الخ في بداية ظهور الترميز تم عمل جدول يسمى جدول ASCII وهي إختصار لـ (American Standard Code for Information Interchange ) طبعا من الإسم واضح إنه أمريكي وهذا الجدول يشمل لكل مايراد ترميزه في الحاسب في تلك الفتره لذلك لم يكن الإهتمام بكل الحروف ولكن كان الاهتمام بالحروف الانجليزيه فقط وبعض الإشارات المعروفه في ذلك الوقت بحكم إنهم أمريكان طبعاً ![]() لذلك تم عمل جدول الـ ascii من 128 خانه وكان طول الحرف في هذا الجدول 7 بت لذلك كان عيبه بأنه ليس ملائم لطول البايت الذي يعادل 8 بت وفي نفس الوقت كانت تنقصه بعض رموز النظام وعلامات أخرى لذلك تمت توسعته الى 256 خانه والصوره التاليه تبين جدول الـ ASCII وتشاهدوا فيها كل حرف والرمز الذي أعطي له بالنظام العشري deciaml ![]() ملاحظات: 1-البايت الواحد يساوي 8 بت وبمعادله بسيطه نعرف عدد الخانات في البايت وهي : 2^8 = 256 خانه. 2- الجدول السابق في الصوره تم ترميز الحروف فيه بالنظام العشري لذلك لو تم تحويل كل رقم من هذه الأرقام الى النظام الثنائي ستظهر معك سلسله طويله من أرقام النظام الثنائي. بعد تقدم عصر الكمبيوتر أصبح المطورون في شتى أنحاء العالم ينظرون الى تطوير الجدول السابق بنظام يشمل حروف اللغات الأخرى، فتوصلوا لفكرة أن يكون لكل لغه مجموعة ترميز ( مجموعة محارف ) خاصه بها، تتكون هذه المجموعه من جدول سعته 256 خانه ( بايت ) وفي نفس الوقت جدول لقانون لهذه اللغه. جدول القانون هو عباره عن قواعد رياضيه توضّح فيها العلاقه بين الحروف والعلامات. على سبيل المثال في اللغه الإنجليزيه حرف a الاسمول يساوي حرف A الكابتل وفي اللغه العربيه حرف ( ل المنفصل ) يساوي حرف ( لـ المتصل ) .... الخ من القوانين المتبعه في كل لغه. أمثله على أسماء مجموعات ترميز : windows-1252 وهو خاص باللغات اللاتينيه ( الانجليزيه + الألمانيه + الأسبانيه + الدنماركيه + النرويجيه + السويديه ). windows-1256 وهو خاص باللغة العربيه . windows-1255 وهو خاصه باللغه العبرية . كل مجموعات الترميز السابقه طول الحرف فيها 8 بت وحيث أن لكل لغه جدول خاص بها فقد كان متعباً للمطورين بالبحث عن إسم الترميز للغه المطلوبه لذلك تم تطوير هذا النظام مره أخرى أيضاً بحيث تكون كل حروف لغات العالم مكتوبه بجدول واحد فقط وهو النظام العالمي المشهور بالـ UNICODE حيث يكون طول الحرف فيه 16 بت يعني لو طبقنا المعادله السابقه وقلنا : 2^16=65536 خانه !! ( وش يعبيها؟!؟ ). لذلك أي حرف مكتوب بترميز اليونيكود يساوي حرفين في أي ترميز اخر وهذا هو السبب الرئيسي الذي يزيد من حجم أي صفحه مخزنه بنظام ترميز اليونيكود. لن أخوض في التفاصيل التاريخيه أكثر من ذلك ولكن كانت هذه نبذه توضيحيه حتى أستطيع أن أبدأ هذا الموضوع بوضوح. لمزيد من التفاصيل التاريخيه أدخل على الروابط التاليه: http://tronweb.super-nova.co.jp/characcodehist.html http://www.wps.com/projects/codes/ http://www.terena.nl/library/multili...oml/mlcs5.html ندخل بموضوعنا الان تم دعم الترميز (مجموعات المحارف) في الإصدارات 4.1 ومافوق من نظام قواعد البيانات المجاني MySQL لذلك القاريء لهذا الموضوع والذي يستخدم إصدارات أقدم من إصدار 4.1 مثل إصدار 4.0 أو إصدار 3.8 فلن يستفيد من هذا الموضوع وعليه الإنصراف فوراً أو البقاء لمعرفة هذه الميزه الجباره في إصدارات 4.1 ومافوق ![]() ساستخدم مصطلحين في حديثي: الأول charset ويقصد به الترميز المستخدم. الثاني collation ويقصد به القانون المستخدم للترميز كما أشرنا لذلك سابقاً. لإظهار مجموعات الترميز المستخدمه في إصدار الـ mysql الخاص بك قم بتنفيذ الأمر التالي في الـ phpMyAdmin أو أي سكربت اتصال بالـ mysql: كود بلغة HTML: show character set; كود بلغة HTML: +----------+-----------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+-----------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russian | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | binary | Binary pseudo charset | binary | 1 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | +----------+-----------------------------+---------------------+--------+ 1- لا يمكن لمجموعتي ترميز مختلفه إستخدام قانون واحد. 2- لكل مجموعة ترميز قانون إفتراضي يتم إختياره في حالة لم يحدد هذا القانون. 3- تم عمل تقليد لأسماء القوانين بحيث يبدأ الإسم بإسم مجموعة الترميز متبوعاً بإسم اللغه المربوطه بهذه المجموعه وينتهي بهذا الإسم بمايلي: _ci وتعني (case insensitive) أي بمعنى تجاهل تحسس حالة الأحرف بحيث يكون حرف a الأسمول يساوي حرف الـ A الكابتل. _cs وتعني (case sensitive) أي بمعنى تطبيق تحسس حالة الأحرف وهي عكس السابقه ci . _bin وتعني (binary) وتعني أخذ الرمز بدلاً من الحرف وهذا القانون يفيد في حالة التحويل وسنتطرق لإستخدامه فيما بعد. السؤال المهم هنا: هل يوجد لكل مجموعة ترميز، أكثر من قانون ؟ الجواب نعم. نفذ الأمر التالي: كود بلغة HTML: SHOW COLLATION LIKE 'latin1%'; كود بلغة HTML: +---------------------+---------+----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +---------------------+---------+----+---------+----------+---------+ | latin1_german1_ci | latin1 | 5 | | | 0 | | latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 | | latin1_danish_ci | latin1 | 15 | | | 0 | | latin1_german2_ci | latin1 | 31 | | Yes | 2 | | latin1_bin | latin1 | 47 | | Yes | 1 | | latin1_general_ci | latin1 | 48 | | | 0 | | latin1_general_cs | latin1 | 49 | | | 0 | | latin1_spanish_ci | latin1 | 94 | | | 0 | +---------------------+---------+----+---------+----------+---------+ ترميز الـ latin1 في الـ mysql هو نفسه ترميز windows-1252 الذي ذكرناه سابقاً. يتبع.... | |||||
|
| |||||
|
الترميز الذي يهمنا في الموضوع هو ترميز اللغه العربيه cp1256 وهو نفسه ترميز windows-1256 الذي ذكرناه سابقاً وبه قانونين يمكن تطبيقها وهي: 1- القانون الإفتراضي cp1256_general_ci . 2- القانون الثنائي cp1256_bin . لذلك حتى نفهم كيف نطبق هذا الترميز مع قانونه الإفتراضي على قواعد البيانات الخاصه بنا يجب معرفة الطبقات الترميزيه في الـ mysql 1- الطبقات الداخليه ( داخل الخادم ) : الطبقه الأولى : ترميز وقانون الخادم( server charset and collation ) الطبقه الثانيه : ترميز وقانون قاعدة البيانات ( database charset and collation ) الطبقه الثالثه : ترميز وقانون الجدول ( table character set and collation ) الطبقه الرابعه : ترميز وقانون الحقل ( column character set and collation ) 2- الطبقات الخارجيه ( اتصال العميل بالخادم ) : الطبقه الأولى: ترميز وقانون الإتصال ( connection character set and collation). الطبقه الثانيه: ترميز وقانون العميل ( client character set and collation ). الطبقه الثالثه: ترميز وقانون النتائج ( result character set and collation) كل هذه الطبقات يتم تطبيقها من الطبقه العليا الى الطبقه السفلى. على سبيل المثال: إذا لم تحدد ترميز وقانون طبقة النتائج فسوف يتم إستخدام ترميز وقانون طبقة العميل لهذه الطبقه وإذا لم تحدد ترميز وقانون طبقة العميل أيضاً فسوف يستخدم ترميز وقانون طبقة الإتصال لهذه الطبقتين وإذا لم تحدد لهذه الطبقات كلها أي ترميز فسوف يستخدم الترميز الإفتراضي وهو latin1 مع قانون latin1_swedish_ci. ونفس الكلام ينطبق على الطبقات الداخليه من الطبقه العليا الى الطبقه السفلى. لنبدأ بإنشاء قاعدة بيانات ذات ترميز اللغه العربيه cp1256 نفذ الأمر التالي في الـ phpMyAdmin أو أي سكربت اتصال بالـ mysql : كود بلغة HTML: CREATE DATABASE arabic_db CHARACTER SET cp1256; نقوم بإنشاء جدول بترميز اللغه العربيه cp1256 نفذ الأمر التالي: كود بلغة HTML: CREATE TABLE al3ndaleeb
(
f1 CHAR(10)
) DEFAULT CHARACTER SET cp1256; السؤال المهم هنا: هل نستطيع أن نقوم بإنشاء جدول ذو حقول ذات تراميز مختلفه ؟ الجواب نعم ![]() وهذه ميزه جباره في طريقة تخزين البيانات داخل الجداول . الان أصبحت طبقات الترميز الداخليه في مثالنا كالتالي: 1- ترميز الخادم ( الترميز الإفتراضي latin1 ) 2- ترميز القاعده ( الترميز العربي cp1256 ) 3- ترميز الجدول ( الترميز العربي cp1256 ) 4- ترميز الحقل ( لم يحدد ) لماذا ظهر ترميز latin1 في الخادم؟ الجواب: لأن الخادم إفتراضياً يستخدم هذا الترميز إلا إذا قام المدير العام للخادم ( المستضيف ) بوضع الترميز العربي إفتراضياً للخادم وهذا هو المفروض الذي يقوم به أي مستضيف خدمه ( حسره على المستضيفين العرب تاركين كل شي على الوضع الإفتراضي ) . ماذا يعني ؟ هل ستصبح نتائجنا كلها بالـ latin1 ؟؟ الجواب : بالطبع لا فسوف نستطيع تغيير قيمة ترميز الخادم عند الإتصال!!! ![]() كيف ؟ الطريقه سهله وهو في كل إتصال نرسل الأمر التالي للخادم: كود بلغة HTML: set character_set_server='cp1256'; كيف نعدل ترميز الطبقات الخارجيه ؟ عن طريق الأمر التالي: كود بلغة HTML: set names cp1256; كود بلغة HTML: set character_set_server='cp1256'; set names cp1256; وأي سؤال في هذا الموضوع أنا حاضر. | |||||
|
| |||||
|
جزاك الله كل خير العندليب .. و الله اديتنى أمل انى أفهم SQL ..
__________________ Egyp6.Com Support@Egyp6.Com ------------- web Hosting - Domain Names - Vps - Online Supporting لا تغرنك الحيـاه و زينتها .. .. .. .. فكل الذى فوق التراب تــرابُ | |||||
|
| |||||
|
الله يجزاك خير على هذه المعلومات القيمه.......
__________________ مطلوب مصمم بنرات اعلانيه محترررررف.. من يجد في نفسه الكفآءه الرجاء مراسلتنا مع نموذج من اعماله على البريد usef.spam@gmail.com "لن ينظر في الرسائل التي لاتحتوي على أعمال" حراج | |||||
|
| |||||
|
زادك الله علماً وجزاك خيراً على هذا الموضوع المهم بالنسبة لي دائماً أستخدم الترميز العربي والـ cp1256_general_ci ومن مميزاتها أني أستطيع استعراض محتويات قاعدة البيانات العربية بكل سهولة باستخدام phpMyadmin وكذلك أحياناً أقوم بالتعديل على البيانات العربية من داخل phpMyadmin مباشرة بدون مشاكل. لكن المشكلة في الشركات المستضيفة والتي عند أي ترقية أو تطوير للـ MySql يقومون بتغيير ترميز كل قواعد البيانات إلى الترميز الإفتراضي latin1_general_ci فتظهر محتويات الموقع على شكل علامات استفهام ؟؟؟؟؟؟؟؟؟؟؟؟ طبعاً الحل أني أقوم بحذف هذا السطر من ملف الإتصال بقاعدة البيانات كود PHP: بالنسبة لترميز السيرفر فيتم تعديله من الملف httpd.conf داخل الأباتشي بتغيير السطر كود PHP: كود PHP: - حجم قاعدة البيانات يكون أقل مايمكن. - امكانية استعراض محتويات قاعدة البيانات من خلال phpMyadmin بشكل واضح وبلغة عربية مفهومة، وكذلك إمكانية التعديل على محتويات الجداول من داخل phpMyadmin بسهولة . سؤال: هل هناك ميزات أخرى لاستخدام الترميز العربي cp1256_general_ci ؟؟ سؤال آخر: ماهي الحالات التي أحتاج فيها للتعديل على ترميز الطبقات الخارجية ؟ * ليتك تدرج نسخة من هذا الموضوع في قسم شركات الإستضافة. [CENTER]** شكراً لك **[/CENTER] | |||||
|
| |||||
|
شكرا لمروركم يا أخواني وبالنسبه للميزه الأقوى من تحويل القاعده الى ترميز cp1256 مع قانون cp1256_general_ci هو خاصية البحث ![]() هل سألتم أنفسكم لماذا لايكون البحث دقيق في المنتديات العربيه وفي بعض السكربتات المهمه مثل القران الكريم؟ السبب هو الترميز يا أخواني إفرض إنك أردت البحث عن إسم ( العندليب ) في منتدى او مجله سيرسل إسم ( العندليب ) في جملة الإستعلام على شكل الترميز السدس عشري لكل حرف حسب الشكل التالي: كود بلغة HTML: select * from user where username='%C7%E1%DA%E4%CD%E1%ED%C8' فأحيانا تظهر لك نتيجه لا يوجد فيها أي لفظ لإسم ( العندليب ) وتستغرب لماذا أتى بهذه النتيجه !! أيضاً هناك خاصيه في بعض المنتديات مثل الـ vb وهي ( المواضيع المتشابهه ) وأغلب المبرمجين يقولون أنها لا تجدي نفعاً وقاموا بتعطيلها وكانوا لا يدرون من أن السبب هو الترميز داخل قاعدة البيانات والتي تم حلت مشكلتها في إصدارات 4.1 ومافوق من الـ mysql . بإذن الله سأوضح هذه المشكله بتفصيل أكثر في موضوع تحويل قاعدة البيانات الى ترميز اللغه العربيه cp1256 . الأخ Jayyan بالنسبه لمشكلة تحديث الخادم من قبل المستضيف وتغيير ترميز القواعد كلها فهذا غباااااااااااء من المستضيف ويتحمل عاقبتها هو وليس أنت. وبالنسبه لملاحظتك التاليه: اقتباس:
أما بخصوص الكووود التالي : اقتباس:
طبقة العميل طبقة النتائج أما طبقة الإتصال فلا يقوم بأي تعديل عليها. وبالنسبه لسؤالك الأول جوابه بأول ردي هذا وهو ميزة البحث الدقيقه. أما بالنسبه لسؤالك الثاني فأنت ملزم بأن تكون الطبقات الخارجيه كلها ذات ترميز عربي حتى تصبح الاستعلامات المرسله الى الخادم عربيه وكذلك النتائج المستقبله من الخادم عربيه أيضاً. | |||||
|
| |||||
|
واااو اول مرة اقرا موضوع نفس هذا مادري شو صار فيني صراحة قريته كاامل ماعندي تعليق << مب قدها بس ارجوك تااابع و الله يعطيك العافية على كل مجهود في هذا المنتدى من اول يوم تواجدت معنا بدت العلوم تنهال علينا بكل صدق انت كنز حقيقي بحمدلله شكرا لك عزيزي عندل <دلع> و بإذن الله نلقاك اخوك الغريم | |||||
|
| |||||
|
جزاك الله خيرا استاذنا العندليب والله يعطيك العافية
__________________ المهم فيما تراه هو ما تتطلع إليه حمل ملفاتك لغاية 5 ميجا مع الاعصار العربي نستضيف موقعك على سيرفرات قوية و محمية على اعلى المستويات www.3sar.com | |||||
|
| |||||
|
باستخدام الترميز utf-8 تكون نتائج البحث دائما ادق ، و هذا سبب ظللت اتسائل عنه دائما لي سؤال ، لدينا سكريبت الترميز المستخدم له هو windows-1256 ، و قاعدة بيانات الترميز فيها هو latin1 . فهل ترميز السكريبت يلغي ترميز القاعدة ؟ لأنه عندما يتم تغيير ترميز السكريبت من نظام windows-1256 إلى ترميز utf-8 طبعا الكلمات الاجنبية تظهر بوضوح ، لكن الكلمات العربية تظهر متشوهة كليا و لا تظهر علامات الاستفهام كنت قد بحثت في الموضوع طويلا ، و بالفعل وجدت بعد الحلول لكنا لم تكن مكتملة ..... مثلا لتحويل قاعدة بيانات ذات الترميز windows-1256 للترميز utf-8 استخدم هذا الكود كود: ALTER TABLE myTable MODIFY myColumn BINARY(255); ALTER TABLE myTable MODIFY myColumn VARCHAR(255) CHARACTER SET utf8 قدمت هذا الطرح باعتبار ان اللغة العربية عليها مسايرة التطورات و عليها الدخول في نظام الترميز العالمي unicode المعرف لدينا ب utf-8 .... و طبعا التحدي المطروح هو الانتقال من نظام windows-1256 إلى نظام utf-8 بدون اشكالية و بدون اي ضياع للمعطيات .... فاغلب المواقع لا تستخدم الترميز utf-8 لهذا السبب .... قد يكون جواب البعض نحن العرب لنا خصوصياتنا و علينا ان ندعم الترميز windows-1256 لانه خاص بما .... لكن ... لكن .... الكل يتجه للترميز العالمي و علينا نحن ايضا ايجاد صيغة للانتقال و للتحويل من القديم للجديد و تحياتي الكبيرة لك اخي العندليب و لي عودة أيضا في الموضع
__________________ لا تطمعن في كرم من غرته شهرته ، فقد نسي انه بالأمس نجح بكرم الاخرين e107 المعربة www.e107arabic.org شبكة الباتشات و السوفتوير www.all-patch.org شركة استضافة مغربية www.naja7host.com | |||||
|
| |||||
|
موضوع من ذهب ، ان أحد إهتماماتي الحالية هي عملية التحويل من windows-1256 الى UTF-8 لأحصل على توافقية أكبر . سيساعدني موضوعك هذا - و هذا شأن كل موضوعاتك المفيدة - على أن انتقل بسرعة في عملية التحويل لأنني اصبحت افهم بشكل اكبر ما يجري . اشكر لك من كل قلبي هذا الحهد يا عندليب ، و أسأل الله تعالى ان يتقبل هذا العمل منك و يجعله في صالح أعمالك اخي الكريم .
__________________ سبحان الله و بحمده سبحان الله العظيم . random-x@hotmail.com ------------- دع عنك الإستعجال | |||||
|
| |||||
|
جزاك الله خير على معلوماتك القيمه والتي تستاهل التثبيت
__________________ اعضاء روافض وجب عدم التعامل معاهم أحمد vip الكواسر jawad-x في بي بورتال Professional Alshajjar صحبتنا Ali7 الجود هوست N-DES السريع boostdomain Dezo jooood2004 | |||||
|
| |||||
|
بصراحه مجهود رائع وكبير منك وانا من الاشخاص الي استفادت من هذا الموضوع جزاك الله كل خير ولا هنت ان شاء الله اخوي العندليب تحياتي
__________________ لا تقول يارب معي هم كبير لكن قل يا هم معي رب كبيــــــــر **أبونايف** أيميل majrat@msn.com | |||||
|
| |||||
|
الخير فالكم يا أخواني وأشكركم على المرور وأتمنى السؤال في أي نقطه غير واضحه في شرحي فأنا لست بمعلم ولكني أحاول أن أوصل المعلومه.الزميل all-patch اقتباس:
بالإمكان أن يكون البحث دقيق بأي ترميز آخر حسب اللغه التي تستخدمها في موقعك. لذلك يجب أن يتوافق ترميز النتائج المرسله من موقعك وترميز النتائج المخزنه في قاعدتك حتى تعطيك دقه في البحث. فإذا اختلف الإثنان أصبح هناك خلط بين القوانين. اقتباس:
سأفترض أنا بسؤالك بأن كل الطبقات الداخليه والخارجيه ذات ترميز latin1 وأن الترميز الذي تريد أن تتعامل به في سكربتك هو windows-1256 فسوف يصبح هناك خلط بين القوانين. وقد ذكرت ذلك في اول الموضوع بأن لكل لغه قانون وضربنا مثالاً على ذلك وقلنا في اللغه العربيه حرف ( ل المنفصل ) هو نفسه حرف ( ل المتصل ) ولكن لكل الحرفين قانون فإذا أتى أي حرف خلف حرف ( ل المنفصل ) يصبح شكل حرف ( ل المنفصل ) هو حرف ( ل المتصل ) وهذا قانون معروف لدينا العرب عند الكتابه لذلك تم عمل هذه القوانين المهمه في جدول ووضعها مع الترميز لذلك لكل لغه قانون خاص بها. بمثال بسيط إن شاء الله تتضح الصوره : هل كلمة ( العندليب ) نفس كلمة ( ال عندليب ) ؟ هل كلمة ( allpatch ) نفس كلمة ( AllPatch ) ؟ اترك الإجابه لك ![]() اقتباس:
نقطه أخرى كيف وصلت بأن الكوود التالي سوف يقوم بتحويل الترميز من windows-1256 الى utf-8 ؟ إن شاء الله تعالى سأذكر موضوع اخر بخصوص التحويل حتى نفصل الأساسيات بموضوع والتطبيق على مواقعنا بموضوع اخر. واشكرك على النقاش والسؤال. أنصحكم بزيارة الموقع التالي لمعرفة تفاصيل أكثر عن الـ unicode http://unicode.org/ | |||||
|
| |||||
|
السلام عليكم أولاً شكراً جزيلاً على الموضوع المتميز ثانياً لدي تساؤلات حول الترميز windows-1256 وكذلك utf-8 أيهما أفضل من ناحية التطبيقات على الويب؟ لماذا لا يمكننا الاعتماد على utf-8 في حين أننا نرى كل التطبيقات يمكنها التعامل مع هذا الترميز بسهولة، مثلاً عند إنشاء pdf بالعربية، عندما يكون هذا الترميز فنجد سهولة في إضافتها، وقس على ذلك في استخدام تطبيقات أخرى؟ هل صحيح أن الاعتماد utf-8 سيؤدي لمضاعفة حجم القاعدة إلى ثلاث مرات؟ هل يمكن الاعتماد على الترميز windows-1256 في قبال الترميز utf-8 على الرغم من مشكلة حجم القاعدة؟ وشكراً جزيلاً.
__________________ أستغفر الله العظيم من كل ذنب عظيم سبحان الله والحمد لله ولا إله الله والله أكبر | |||||
|
| |||||
|
وعليكم السلام اهلا بالزملاء Hasan و N-DES وشكرا على مروركم بالنسبه لتساؤلاتكم اقتباس:
![]() اذا كان موقعك عربي فأكيد زوارك حيكونوا عرب وأكيد حيكون الترميز windows-1256 العربي موجود لدى زوارك في أجهزتهم إلا إذا كان الويندوز لديهم لا يدعم الترميز العربي فحينها سيفيد نظام اليونيكوود بلا شك ولكن عيب ترميز اليونيكود أنه يضاعف حجم البيانات المكتوب به لان الحرف في اليونيكوود يساوي 2 بايت. اقتباس:
الـ utf8 أحد تطويرات ترميز اليونيكوود والحجم فيه نفس الحجم في اليونيكوود والحرف يساوي 2 بايت. اقتباس:
فهذه ستجعلك تفكر في طريقة برمجيه للتحويل من الـ windowd-1256 الى utf8 ![]() اقتباس:
![]() موفقين | |||||
|
| |||||
|
رائع استاذ العندليب ، لله يجعله في ميزان حسناتك . موضوع مفيد للكبير والصغير المبتدئ والخبير ![]() عندي كم إضافة بسيطة جداً لاصحاب السيرفرات اذا ما كان فية مانع .. طريقة إظهار الترميز في mysql server للخادم والقواعد والعميل والجداول والاتصال عن طريق Shell تقوم بكتابة الامر كود PHP: كود PHP: كود PHP: تلاحظ ظهر لك نفس الي ذكرة الاستاذ العندليب Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 الترميز المستخدم latin1 تستطيع تغيير الترميز في خادم mysql عن طريق إما تنفيذ آوامر في الشل او عن طريق إضافة اسطر خاصة في ملف اعدادات mysql my.cnf عن طريق التالي نقوم بتحرير ملف my.cnf كود PHP: كود PHP: كود PHP: كود PHP: وشاكر للمبدع دائماً الاستاذ العندليب
__________________ لتواصل بريد + ماسنجر admin( @ )tec4serv.com 3rbhost سابقاً | |||||
|
| |||||
|
ممتاز أخي العندليب جزاكم الله خير الجزاء عماد
__________________ vBulletinClub.com alkahf.net آخر أعمالنا : vb.alnassrclub.com mydanalshar.com chatqatar.com/vb wady7ly.com/vb asadiq.net | |||||
|
| |||||
|
أخي العندليب تسلم على الموضوع المهم ... وحقيقة معلوماتي في هذا االأمر صفر ولكن تحصل معي مشكلة في موقعي ... دائماً يتوقف وخاصة عندما يكون عليه ضغط زوار المستضيف شركة اجنبية امريكية (( www.websitesource.com )) وعند توقف الموقع اضطر لعمل ريستارت لسيرفر ويعمل وللمعلومية يوجد لدي اكثر من 7مواقع بعضها بقاعدة بيانات وبعضها مجرد صفحات هتمل وجميعها تتوقف الموقع الرئيسي عبارة عن دليل وهو سكربت وصلة والأخر سكربت مملكة العرب... عند محادثي للمستضيف عبر الشاتنق يذكر بأن السبب في ((MYSQL )) حاولت اخبره بأن بعض المواقع بدون قاعدة بيانات ولكن يدعون بأن السبب من كود يسبب مشكلة لـ vps وهو نوع الإستضافة لديهم ممكن تساعدني بارك الله فيك في حل اللغز ... وهذا موقع اجنبي يمكن يفيدك http://www.webhostingtalk.com/showth...=websitesource
__________________ سبحان الله والحمد لله والله واكبر | |||||
|