اذهب إلى المحتوى

السؤال

نشر

أحاول رفع ملف pdf يحمل اسم عربي باستخدام لغة php، لكن اسمه يتحول لرموز غير مفهومة
فكيف يمكنني حل هذه المشكلة، مع العلم أنني مضطر لإبقاء اسمه باللغة العربية لعملية الأرشفة لاحقًا؟
وشكرًا

Recommended Posts

  • 0
نشر

للقيام برفع ملفات تحمل أسماء باللغة العربية يجب تحول ترميز  الصف الذي يحمل اسم الملف إلى utf-8 والذي ينصح باستعماله دائمًا وفي كل ملفات الموقع نظرًا لأنه يدعم أغلب اللغات (إن لم نقل كلها). 

لذلك يجب تحويل ترميز الملف والصف الذي يحتوي على اسم الملف عن الطريق الخطوات التالية :

في البداية أضف الكود التالي إلى ملف php:

header('Content-type: text/plain; charset=utf-8');

ومن ثم ادخل إلى الجدول الخاص برفع الملف وقم بكتابة هذا الكود في console (غيّر name الى اسم الصف الذي يحمل اسم الملف):

set character_set_database=utf8;
set session character_set_server=utf8;
set global character_set_server=utf8;
set name utf8;

المزيد حول ترميز utf-8

اللغات التي يدعمها utf-8

  • 0
نشر

جرب استعمال السكريبت التالي:

صفحة  اختيار الملف بـ html:

<html>
<head></head>
<body>
<form action="up.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="FILE" name="file" id="file">
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>

صفحةphp لتحميل الملف إلى السيرفر:

<?php 
if(isset($_POST['submit'])) {
   $file  = $_FILES['file']['name'];
   $encoded_fname = base64_encode($file);
   if($file) {
        $move = move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $encoded_fname);
        if($move) {
        echo "file uploaded";
        }
   }
}
?>

صفحة الاطلاع على الملف والتأكد من تحميله:

$dir = "upload/";
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            if(mb_check_encoding($file)) {
            echo "filename: .".base64_decode($file)."<br />";
            }
            else {
                echo $file . "<br>";
            }
        }
        closedir($dh);
    }
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...