لفت نظري الموضوع لانه يتكلم حول تشفير ISO-8859-6 والذي سيتم استخدامه في النسخة العربية
من دليل استخدام PHP بعد عدة محاولات لاستخدام تشفير Windows-1256 أو أي تشفير آخر باءت
بالفشل.
في الواقع أن كل من تشفير Windows-1256 و تشفير ISO-8859-6 يخصان اللغة العربية، وتوجد
أيضاً أنواع أخرى من التشفير للغة العربية نفسها، كما يمكن استخدام تشفير UTF العالمي
المستوى (Unicode) وتعني كلمة تشفير هو استخدام ترميز معين لكل حرف، فمن المعروف مثلا
ً أن Windows-1256 (التشفير العربي الافتراضي لويندوز) يستخدم الرقم 218 كمقابل رمزي
للحرف ع في حين يستخدم التشفير ISO-8859-6 (التشفير العربي ISO) الرقم 217 لتمثيل نفس
الحرف ع
وعمليات التشفير بشكل عام تفيد عند نقل بيانات عربية من بيئة إلى أخرى، فمثلاً، إذا كنت
تستخدم Windows وقمت بكتابة ملف نصي باللغة العربية، وقمت بحفظه على موقع إنترنت، قم
بمحاولة عرضه على نظام Linux يستخدم تشفير Arabic-ISO أو UTF أو حتى على نظام ماكنتوش
، فستجد أن محتويات الملف مختلفة، والسبب في ذلك هو أن الملف لا يحفظ على شكل حروف، بل
يحفظ على شكل أرقام (تمثيل رقمي) وعندما تقوم بعرضه فإن العارض سيقوم بتمثيل الحروف بناءً
على جدول التشفير (الترميز) الخاص به.
لذلك تم الاصطلاح على إضافة تعريف خاص في ملفات صفحات الويب HTML يقوم بتحديد نوعية التشفير
التي استخدمت أثناء الكتابة، بحيث يفهم المستعرض في أي نظام آخر ما هو التشفير الذي يجب
استخدامه للعرض.
في الغالب أنظمة Windows 2000 و Windows XP تسمح بالكتابة بأي نوع من التشفير، لكنك يجب أن
تضيف خاصية تحديد التشفير إلى الملف الذي تستخدمه إذا كان صفحة ويب.
المثال التالي يوضح الفرق بين كل من تمثيل الرموز في هيئة تشفير
Arabic Windows و Arabic ISO:
كود PHP:
<?php
// Simple example to explain encoding differences
// By [email]VisualMind@php.net[/email]
if (!$HTTP_GET_VARS['frame']) {
?>
<frameset cols="*,*">
<frame src='?frame=1'>
<frame src='?frame=2'>
</frameset>
<?
exit;
}
switch($HTTP_GET_VARS['frame']) {
case 1:
?>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1256">
<body dir=rtl>
تشفير Arabic-Window<br>
<?
break;
case 2:
?>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-6">
<body dir=rtl>
تش<?=chr(225).chr(234)?>ر Arabic-ISO<br>
<?
}
for($i=130; $i<255; $i++)
echo "<input type=text name=no value='$i'> =
<input type=text name=char value='".chr($i)."'><br>";
?>
</body>
وتشفير Arabic ISO هو التشفير المتعارف به عالمياً على مستوى كل الأنظمة بالرغم من أنه ليس الأكثر شعبية بسبب انتشار تشفير Arabic Windows مع أنظمة ويندوز.
__________________
visualmind (at) php.net
أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.