directory lister中文文件夹或者中文文件乱码,网上别人整个改好的程序或者修改首页为UTF-8编码都不行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了directory lister中文文件夹或者中文文件乱码,网上别人整个改好的程序或者修改首页为UTF-8编码都不行相关的知识,希望对你有一定的参考价值。
directory lister中文文件夹或者中文文件乱码,网上别人整个改好的程序或者修改首页为UTF-8编码都不行,求大神解答,挺喜欢这个程序的,可是不能上传中文文件,好苦恼。
DirectoryLister中文乱码的问题之前也一直纠结在编码上,所有能设定的编码字符集都设定成了utf-8,系统也换了好几次,CentOS切了N个版本,ngnix和Apache也都试过了,问题依旧,其实很简单就能解决,确实是编码问题,但不是生产环境的编码,而是文档的编码,而且不是UTF-8,而是所有的文档编码指定成gb2312,以DirectoryLister2.6.1为例,\resources\themes\bootstrap下的index.php内的代码header("content-type:text/html;charset=UTF-8");
这里的utf-8要指定成charset=gb2312
此目录下的php文档都要重新另存一下,在保存的时候编码指定为GB2312,并覆盖原有文档。
\resources目录下的DirectoryLister.php也要另存指定GB2312并覆盖旧文档。逗比魔化版的涉及到的README.HTML文档也要另存gb2312并覆盖,不然也会乱码。
在此也要感谢一下b站up主:小渔学长 的指导,谢谢~!
2020-5-3 参考技术A <?php
namespace Content\\Common;
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2017-05-18
* Time: 13:22
*/
class File
public static function pathdos2unix($path)
$parts = explode('\\\\', $path);
return implode('/', $parts);
public static function humansize($size)
$i = 0;
$units = array('B', 'K', 'M', 'G', 'T');
// 最大单位T
while ($size > 1024 && $i < 5)
$size /= 1024;
$i++;
return sprintf('%.2f%s', $size, $units[$i]);
/**
* scandir except . or ..
* @param $files: return
* @param $dir: directory
*/
public static function listdir(&$files, $dir)
if ($handle = opendir($dir))
while (false != ($entry = readdir($handle)))
$path = $dir . '/' . $entry;
if ($entry != '.' && $entry != '..')
$file['name'] = $entry;
$file['size'] = self::humansize(filesize($path));
$file['time'] = date('Y-m-d', filemtime($path));
array_push($files, $file);
closedir($handle);
/**
* recursive version of function listdir
* @param $files: return
* @param $dir: directory
*/
public static function listdir_r(&$files, $dir)
if ($handle = opendir($dir))
while (false != ($entry = readdir($handle)))
$path = $dir . '/' . $entry;
if ($entry != '.' && $entry != '..')
if (is_file($path))
$file['name'] = $entry;
$file['size'] = self::humansize(filesize($path));
$file['time'] = date('Y-m-d H:i:s', filemtime($path));
array_push($files, $file);
else if(is_dir($path))
self::listdir_r($files, $path);
closedir($handle);
public static function mylistdir($dir)
$files = scandir($dir);
return array_diff($files, array('.', '..'));
/**
* 递归列出相对$rootpath下面相对于$rootpath所有文件, 大小+时间+相对路径
* @param $array
* @param $rootpath
*/
public static function recursiveListPath(&$array, $rootpath)
$fileinfos = new \\RecursiveIteratorIterator(
new \\RecursiveDirectoryIterator($rootpath)
);
// $rootpath字符串长度
$offset = strlen(rtrim($rootpath, '\\\\/') . '/');
foreach($fileinfos as $pathname => $fileinfo)
if ($fileinfo->isFile())
$size = self::realFileSize($pathname);
$file['size'] = self::humansize($size);
$file['time'] = date('Y-m-d', filemtime($pathname));
// 相对路径
$name = preg_replace( '/\\\\\\\\/', '/', mb_substr($pathname, $offset) );
$file['name'] = mb_convert_encoding($name, "UTF-8", "GBK");
// $file['name'] = preg_replace( '/\\\\\\\\/', '/', substr($pathname, $offset) );
array_push($array, $file);
/**
* php.ini
* [COM]
* com.allow_dcom=true
* [COM_DOT_NET]
* extension=php_com_dotnet.dll
* @param $filePath
* @return int
*/
public static function realFileSize($filePath)
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
$fs = new \\COM("Scripting.FileSystemObject");
return $fs->GetFile($filePath)->Size;
else
return filesize($filePath);
/**
* 删除一个目录下所有的普通文件, 非递归
*/
public static function emptydir($dir)
if (is_dir($dir))
if ($dh = opendir($dir))
while (($file = readdir($dh)) !== false)
if ($file !== '.' && $file !== '..')
unlink($dir.'/'.$file);
closedir($dh);
/**
* 计算一个目录下文件个数, (非递归)
* @param $dir
*/
public static function countDir($dir)
$count = 0;
if (is_dir($dir))
if ($dh = opendir($dir))
while (($file = readdir($dh)) !== false)
if ($file !== '.' && $file !== '..')
$count++;
closedir($dh);
return $count;
php 亚马逊lister定制
以上是关于directory lister中文文件夹或者中文文件乱码,网上别人整个改好的程序或者修改首页为UTF-8编码都不行的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 和 watchOS 2 之间建立一个类似于 Lister App 的具有共享框架的项目?
自制软件的 data_directory 在哪里?或者对于 postgresql 或者我该如何解决错误,“”global/pg_filenode.map“:没有这样的文件或目录”?