وعليكم السلام ورحمة الله وبركاته
حي الله زميلنا all-patch
ونورت الموضوع والنقاش أيضاً
بالنسبه لسؤالك التالي:
ماذا عن اصحبا المواقع المستضافة ، و ماذا عن من يملك موقع مستضاف على احدى الشركات الاجنبية و الاكيد انهم كثرة ، لم تم مراسلة الشركة لن يلبو الطلب بتغيير نظام التخزين و هذا شيء اكيد ، لذا ارجوا ان تكون الحلول مبينة على ان هناك اصحاب مواقع قدرتهم تكون محدوة فقط على نظام القاعدة و نظام السكريبت الخاص بهم ...
عزيزي ليس من الواجب مخاطبة المستضيف لتغيير ترميز طبقة الخادم أو ترميز قواعد البيانات.
إن كنت صاحب موقع فقط قم بتطبيق الخطوات التي ذكرتها في ردي رقم 23
اما بخصوص تساؤلك التالي:
طرحت سكريبت و تجاهلت فيه uft-8 .... لي رجاء سكريبت تغيير النظام من windows-1256 إلى utf-8 ....
أرجوا الإفادة في الموضوع لانه موضوع سيغير أشياء كثيرة و سيجعلنا نستريح من عقدة التحويل للترميز uft-8 ...
الحقيقه إعتمدت في برمجة السكربت على القيمه الإفتراضيه للـ collation ( القانون ) حسب الترميز المطلوب في السكربت.
لاحظ معي الجدول التالي:
كود 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 |
+----------+-----------------------------+---------------------+--------+
أمام كل إسم ترميز تجد القيمه الإفتراضيه للـ collation ( القانون ).
فترميز cp1256 العربي ستكون القيمه الإفتراضيه لقانونه هي cp1256_general_ci
وترميز utf8 ستكون القيمه الإفتراضيه لقانونه هي utf8_general_ci
بإمكانك وضع Utf8 في السكربت الذي برمجته ولكن سوف يصبح الـ collation ( القانون ) المستخدم هو الـ utf8_general_ci والذي بسببه يظهر الحرف العربي مشوه في طريقتك التي ذكرتها في ردك السابق في أول الموضوع.
لاحظ معي أنواع الـ collations ( القوانين ) المدرجه لترميز الـ utf8
كود HTML:
+--------------------+---------+-----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+--------------------+---------+-----+---------+----------+---------+
| utf8_general_ci | utf8 | 33 | Yes | Yes | 1 |
| utf8_bin | utf8 | 83 | | Yes | 1 |
| utf8_unicode_ci | utf8 | 192 | | Yes | 8 |
| utf8_icelandic_ci | utf8 | 193 | | Yes | 8 |
| utf8_latvian_ci | utf8 | 194 | | Yes | 8 |
| utf8_romanian_ci | utf8 | 195 | | Yes | 8 |
| utf8_slovenian_ci | utf8 | 196 | | Yes | 8 |
| utf8_polish_ci | utf8 | 197 | | Yes | 8 |
| utf8_estonian_ci | utf8 | 198 | | Yes | 8 |
| utf8_spanish_ci | utf8 | 199 | | Yes | 8 |
| utf8_swedish_ci | utf8 | 200 | | Yes | 8 |
| utf8_turkish_ci | utf8 | 201 | | Yes | 8 |
| utf8_czech_ci | utf8 | 202 | | Yes | 8 |
| utf8_danish_ci | utf8 | 203 | | Yes | 8 |
| utf8_lithuanian_ci | utf8 | 204 | | Yes | 8 |
| utf8_slovak_ci | utf8 | 205 | | Yes | 8 |
| utf8_spanish2_ci | utf8 | 206 | | Yes | 8 |
| utf8_roman_ci | utf8 | 207 | | Yes | 8 |
| utf8_persian_ci | utf8 | 208 | | Yes | 8 |
+--------------------+---------+-----+---------+----------+---------+
هل ترى قانون للغه العربيه؟
الظاهر أنهم وضعوا قانون اللغه العربيه مع اللغه الفارسيه utf8_persian_ci أصبح العرب من الفرس ياساتر.
طريقتك السابقه كانت كالتالي:
كود PHP:
ALTER TABLE myTable MODIFY myColumn BINARY(255);
ALTER TABLE myTable MODIFY myColumn VARCHAR(255) CHARACTER SET utf8
أنت لم تحدد القانون فيها لذلك أصبح القانون هو utf8_general_ci وأعتقد هذا هو سبب تشويه الحرف العربي فيها.
جرب تعديل الأمر بالشكل التالي:
كود PHP:
ALTER TABLE myTable MODIFY myColumn BINARY(255);
ALTER TABLE myTable MODIFY myColumn VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_persian_ci
هناك قانون آخر وهو utf8_unicode_ci ولا أدري هل يغني عن هذا الفارسي أم لا.
جرب وأعطنا نتائجك.
ملاحظه مهمه:
ترميز utf8 يختلف عن ترميز ucs2 .
لمزيد من المعلومات أدخل على الرابط التالي:
http://mysql.inspire.net.nz/doc/refm...t-unicode.html
بالتوفيق