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定制

<?php
/**
 * Example code for adding custom shortcodes for WP-Lister Pro for Amazon
 */

/**
 * Returns value to output in wpla shortcode
 *
 * @param $post_id
 * @param $product
 * @param $item
 * @param $profile
 * @return string
 */
function prefix_custom_shortcode( $post_id, $product, $item, $profile ) {

	/** create a value to output in amazon listing **/

	return $value;

}

/**
 * register shortcodes for use with wpla
 *
 * @since  1.0.0
 * @return void
 */
function prefix_register_wpla_shortcodes() {

	wpla_register_profile_shortcode( 'prefix_shortcode_name', 'Shortcode Name', 'prefix_custom_shortcode' );

}
add_action( 'plugins_loaded', 'prefix_register_wpla_shortcodes' );

以上是关于directory lister中文文件夹或者中文文件乱码,网上别人整个改好的程序或者修改首页为UTF-8编码都不行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 和 watchOS 2 之间建立一个类似于 Lister App 的具有共享框架的项目?

php 亚马逊lister定制

php 亚马逊lister定制

oracle服务配置解决no lister

自制软件的 data_directory 在哪里?或者对于 postgresql 或者我该如何解决错误,“”global/pg_filenode.map“:没有这样的文件或目录”?

[vba excel]lister fichiers档案,et sous档案