首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:使用Unicode文件名的file_put_contents()

PHP:使用Unicode文件名的file_put_contents()
EN

Stack Overflow用户
提问于 2015-05-10 00:48:18
回答 2查看 2.6K关注 0票数 1

我想将一些数据保存在文件名中包含unicode字符的文件中(如中文、西里尔文、阿拉伯语等)使用PHP的file_put_contents()函数。我不想用urlencode()这样的东西单独对它们进行编码,因为如果文件名只包含非拉丁字符,那么没有人能够读懂它们。三个最大的OSes视窗,MacOS / OS X和Linux支持UTF-8或UTF-16字符的文件名,并可以毫无问题地显示它们,但似乎这并不是简单的调用类似的东西:

代码语言:javascript
运行
复制
file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "こんにちは.txt", "");

在Windows 7(德语本地化)上,该文件存储为:

代码语言:javascript
运行
复制
ã“ã‚“ã«ã¡ã¯.txt

PHP文件本身以UTF-8编码保存。在这3个系统上,文件名中包含unicode的文件是否有统一的保存方式?

EN

回答 2

Stack Overflow用户

发布于 2016-03-05 02:48:47

file_put_contents(__DIR___.iconv("UTF-8", "cp1251", $filename), $data); -工作完美!

票数 1
EN

Stack Overflow用户

发布于 2015-05-10 01:08:52

正如here回答的那样,这是一个已知的视窗问题(glob() can't find file names with multibyte characters on Windows?)。

你可以尝试URLify来缓解这个问题,只在Windows上,文件应该有可读的名称,然后…

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30142581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档