小编ahk*_*ahk的帖子

如何在PHP中编码多字节文件名并在javascript中解码它们?

以下是文件名的一些示例:

??.jpg (Chinese)
?????????.jpg (Russian)
AbÇöi?Ü?.jpg (Turkish, ISO-8859-9)
...
Run Code Online (Sandbox Code Playgroud)

我试过rawurlencode(mb_convert_encoding($file, "UTF-8", mb_detect_encoding($file)))但这不起作用,所有中文和俄文字符都打印为%3F(常规问号),所有土耳其字符都被删除.

我在Windows,PHP 5.3上测试.

我找到的唯一解决方案是明确输入编码:rawurlencode(mb_convert_encoding($file, "UTF-8", "ISO-8859-9"))这仅适用于土耳其语字符.

顺便说一句,mb_detect_encoding($file)总是为上面的文件返回"UTF-8".

编辑:
我运行以下代码后,我认为mb_convert_encoding()无法解决我的问题:

$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("mp", FilesystemIterator::UNIX_PATHS));
$iterator = new RegexIterator($iterator, '/^.+\.(gif|jpg|jpeg|png)$/i', RegexIterator::GET_MATCH);

foreach ($iterator as $file)
{
    foreach (mb_list_encodings() as $encoding)
        var_dump(rawurlencode(mb_convert_encoding($file[0], "UTF-8", $encoding)) . " : " . $encoding);
}
Run Code Online (Sandbox Code Playgroud)

我想这是关于编码的东西,但我不知道该怎么做.

javascript php encoding

10
推荐指数
1
解决办法
1202
查看次数

标签 统计

encoding ×1

javascript ×1

php ×1