PDA

View Full Version : نمایش دادن نام فایل های فارسی با ؟؟؟ هنگام کار نمایش دایرکتوری ها



armsoftpc
پنج شنبه 24 فروردین 1391, 18:04 عصر
به نام خدا
با سلام
زمانی که با توابع دایرکتوری همچون opendir ,... دایرکتوری را نمایش می دهم ، فایل هایی که نام آن ها انگلیسی است ، به درستی نمایش پیدا میکنند ، اما در مورد فایل فارسی به صورت ؟؟؟؟ نامشان نمایش پیدا می کند و فولدرهای فارسی که اصلا نمایش پیدا نمی کنند.
چگونه این مشکل را حل کنم.:لبخند:

armsoftpc
دوشنبه 04 اردیبهشت 1391, 23:56 عصر
راحلی پیدا نشد...

Hamid.RDN
پنج شنبه 07 اردیبهشت 1391, 11:47 صبح
دوست عزیز PHP از unicode به صورت کامل پشتیبانی نمیکنه باید منتظر PHP 6 باشی یا از راه حل سیستمی استفاده کنید

MMSHFE
پنج شنبه 07 اردیبهشت 1391, 12:11 عصر
PHP در نسخه های فعلی مشکل خوندن فایلها با اسامی یونیکد رو رفع نکرده. موفق باشید.

MMSHFE
پنج شنبه 07 اردیبهشت 1391, 12:18 عصر
فکر کنم یک راه حل پیدا کردم!!!
این کد رو ببینید:


<!doctype html>
<html>
<head>
<title>File List</title>
<meta charset="utf-8"/>
</head>
<body>
<?php
$files = scandir('.');
foreach($files as $file) {
echo iconv('windows-1256', 'utf-8', $file).'<br/>'.PHP_EOL;
}
?>
</body>
</html>
این رو توی یک پوشه که اسامی فایلهاش فارسی هستن بگذارین ببینید چه نتیجه ای میگیرین. البته دقت کنید که برای کارکردن با فایلها از همون اسم عجیب و غریبشون باید استفاده کنید. فقط موقع نمایش به کاربر میتونید به این شکل اونها رو بصورت فارسی در بیارین.

Hamid.RDN
پنج شنبه 07 اردیبهشت 1391, 14:25 عصر
خیر جواب نخواهد داد چراکه PHP قابلیت خواندن اطلاعات دایرکتوری به فرمت UTF8 و UTF16 که در ویندوز ذخیره می شن رو نداره.

MMSHFE
پنج شنبه 07 اردیبهشت 1391, 15:35 عصر
شما امتحان کردین؟ من شخصاً امتحان کردم و جواب داد. اینم کدی که تست کردم:


<!doctype html>
<html>
<head>
<title>File List</title>
<meta charset="utf-8"/>
</head>
<body>
<?php
function getFiles($dir, $level = 0) {
if(file_exists($dir)) {
$files = scandir($dir);
unset($files[0], $files[1]);
foreach($files as $file) {
for($i = 0; $i < $level; $i++) {
echo '&nbsp;&nbsp;&nbsp;&nbsp;';
}
echo iconv('windows-1256', 'utf-8', $file).'<br/>'.PHP_EOL;
if(is_dir($dir.'/'.$file)) {
getFiles($dir.'/'.$file, $level + 1);
}
}
}
}
getFiles('.');
?>
</body>
</html>

کافیه یک یا چند پوشه با اسامی فارسی و فایلهایی با اسامی فارسی بگذارین کنارش تا براتون نشونشون بده. ضمناً وارد پوشه ها هم میشه. تنها محدودیتی که وجود داره، درمورد پوشه هایی هست که از ی فارسی و نه ي عربی استفاده میکنن که اون هم با Renameکردن پوشه ها و استفاده از ي عربی (با دو نقطه زیرش) رفع میشه. موفق باشید.

armsoftpc
جمعه 12 خرداد 1391, 18:37 عصر
به نام خدا
با سلام
آقای شهرکی حرف شما درست است و کار می کنه ، اما همنطور که خودتون گفتید
البته دقت کنید که برای کارکردن با فایلها از همون اسم عجیب و غریبشون باید استفاده کنید. فقط موقع نمایش به کاربر میتونید به این شکل اونها رو بصورت فارسی در بیارین. نام ها هنگام کار با فایل (با mycomputer) عجیب و غریب اند ، که این باز برای خودش یک مشکل است و این روش کاربرد ندارد.

MMSHFE
جمعه 12 خرداد 1391, 19:43 عصر
نه توی My Computer درست نشون میده. من خودم امتحان کردم. اینجا (http://barnamenevis.org/showthread.php?343705-%D8%B3%D8%A7%D8%B2%DA%AF%D8%A7%D8%B1%D9%8A-%D9%86%D8%A7%D9%85-%D8%B9%D9%83%D8%B3-%D8%A8%D8%A7-%D9%81%D8%A7%D8%B1%D8%B3%D9%8A-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%D8%A2%D9%BE%D9%84%D9%88%D8%AF-%28%D8%AD%D9%84-%D8%B4%D8%AF%29) رو ببینید.

رضا قربانی
چهارشنبه 09 دی 1394, 16:52 عصر
شما امتحان کردین؟ من شخصاً امتحان کردم و جواب داد. اینم کدی که تست کردم:


<!doctype html>
<html>
<head>
<title>File List</title>
<meta charset="utf-8"/>
</head>
<body>
<?php
function getFiles($dir, $level = 0) {
if(file_exists($dir)) {
$files = scandir($dir);
unset($files[0], $files[1]);
foreach($files as $file) {
for($i = 0; $i < $level; $i++) {
echo '&nbsp;&nbsp;&nbsp;&nbsp;';
}
echo iconv('windows-1256', 'utf-8', $file).'<br/>'.PHP_EOL;
if(is_dir($dir.'/'.$file)) {
getFiles($dir.'/'.$file, $level + 1);
}
}
}
}
getFiles('.');
?>
</body>
</html>

کافیه یک یا چند پوشه با اسامی فارسی و فایلهایی با اسامی فارسی بگذارین کنارش تا براتون نشونشون بده. ضمناً وارد پوشه ها هم میشه. تنها محدودیتی که وجود داره، درمورد پوشه هایی هست که از ی فارسی و نه ي عربی استفاده میکنن که اون هم با Renameکردن پوشه ها و استفاده از ي عربی (با دو نقطه زیرش) رفع میشه. موفق باشید.
این برای ویندوز جواب میده ، یعنی زمانی که در هاست لینوکس قرار میدید همه چی خراب میشه .
در نسخه جدید php که در همه ی هاست ها موجود است و هر سری ورژن های جدید میاد با این مشکلات هماهنگ میشه ، فقط کافیه از ویندوز بکشید بیرون .
پیشنهاد من به تمام برنامه نویسات تحت وب اینه که حتما با سیستم عامل لینوکس کار کنند و در لینوکس به کدنویسی بپردازند .
مخصوصا سئو کارای عزیز

موفق و پیروز باشید

charcharkh
چهارشنبه 09 دی 1394, 18:15 عصر
مخصوصا سئو کارای عزیز

حالا چرا سئو کارها ؟؟!!! میشه یکم توضیح بدین.