Php 使用unicode字符保存文件名

Php 使用unicode字符保存文件名,php,encoding,utf-8,windows-7,Php,Encoding,Utf 8,Windows 7,我已经在互联网上搜索过了,所以在以下方面仍然没有运气: 我想知道,当文件名包含一些unicode字符时,如何使用file\u put\u contents正确保存文件。(Windows 7作为操作系统) 在文件中重新显示: jГ©rГґme.jpg 尝试了所有可能的函数组合,如iconv和mb_convert_encoding,以及所有可能的编码,将源文件转换为不同的编码。 设置了所有正确的标题,浏览器正确识别UTF-8 然而,我可以成功地复制粘贴并在explorer的GUI中创建一个具有这样

我已经在互联网上搜索过了,所以在以下方面仍然没有运气:

我想知道,当文件名包含一些unicode字符时,如何使用
file\u put\u contents
正确保存文件。(Windows 7作为操作系统)

在文件中重新显示:

jГ©rГґme.jpg
尝试了所有可能的函数组合,如
iconv
mb_convert_encoding
,以及所有可能的编码,将源文件转换为不同的编码。 设置了所有正确的标题,浏览器正确识别
UTF-8

然而,我可以成功地复制粘贴并在explorer的GUI中创建一个具有这样名称的文件,但是如何通过PHP实现呢

最后一个核心解决方案是
urlencode
字符串并保存文件。

这可能已经晚了,但我刚刚找到了一个解决方案来解决这个让我痛苦的问题。 忘掉iconv多字节解决方案;问题!(在链接中,你会发现这一切的美妙之处。)

在无数次尝试和解决方法之后,我遇到并决定在文件名中处理unicode的最佳方法是在写入文件之前对其进行音译

保存文件名之前对其进行音译的示例:

$filename = "Αρχείο.php";   // greek name for 'file'
echo URLify::filter($filename,128,"",TRUE);
// output:   arxeio.php

看起来您正在传递UTF-8,Windows希望输入非UTF-8 ANSI代码页。也可能是在你的代码中,你得到了UTF-8,但期望单字节编码。把你建议的文件名写入一个文件并检查一下怎么样?嗯,我试过了iconv(“UTF-8”,“Windows-1252”,“$string”)提供了
j l rфme.jpg
,那么Windows真正期望的编码是什么呢?您能尝试使用MS工具运行您的程序,将代码页设置为UTF-8吗?我希望避免安装任何额外的东西,因为应该有一些解决方案?文件保存在任何地方,unicode字符被广泛使用。看起来它正在将许多字符保存为
cyrillic
;你是俄罗斯人还是什么?这两种方法中的任何一种都应适用于iconv(“UTF-8”、“ISO-8859-1”、$string)
utf8\u解码($string)
$filename = "Αρχείο.php";   // greek name for 'file'
echo URLify::filter($filename,128,"",TRUE);
// output:   arxeio.php