File upload 正在上载yii中的阿拉伯语命名文件…编码问题

File upload 正在上载yii中的阿拉伯语命名文件…编码问题,file-upload,unicode,utf-8,yii,collation,File Upload,Unicode,Utf 8,Yii,Collation,我正试图上传一个名为阿拉伯语的文件,在上传正确的阿拉伯名称保存在db中的文件后,但在目标文件夹中,该文件没有正确的名称保存…那么这里有什么问题 是的,是窗户 PHP和其他使用MS C运行时stdio文件处理实现的应用程序无法处理字符超出机器默认代码页的Windows文件名。如果服务器设置为阿拉伯语,则可以上载阿拉伯语(但不能上载汉语或拉丁口音)。从理论上讲,您可以将进程的代码页设置为UTF-8(65001),但是C运行时中存在严重的错误,这使得此设置不可靠 如果您想要Unicode文件名支持,您

我正试图上传一个名为阿拉伯语的文件,在上传正确的阿拉伯名称保存在db中的文件后,但在目标文件夹中,该文件没有正确的名称保存…那么这里有什么问题

是的,是窗户

PHP和其他使用MS C运行时stdio文件处理实现的应用程序无法处理字符超出机器默认代码页的Windows文件名。如果服务器设置为阿拉伯语,则可以上载阿拉伯语(但不能上载汉语或拉丁口音)。从理论上讲,您可以将进程的代码页设置为UTF-8(65001),但是C运行时中存在严重的错误,这使得此设置不可靠

如果您想要Unicode文件名支持,您必须直接调用Win32
W
API,而不是依赖标准文件IO,这需要大量工作,除非该语言具有内置支持(.NET语言和Python有;PHP没有)


允许用户指定用于服务器端文件系统存储的文件名是危险的,而且很难做到正确,尤其是在Windows下。通常最好使用代理文件名,例如
123。dat
其中
123
可能是数据库行ID。这也会消除Unicode问题。(如果您想直接为它们提供服务,可以使用重写使它们在外部看起来更友好。通过IRI编码,URL可以很容易地在路径中包含Unicode字符。)

什么平台?如果是窗户,就放弃。另外,一般来说,您应该避免使用用户输入作为创建文件系统名称的基础。