【发布时间】:2010-02-07 13:16:58
【问题描述】:
我正在使用 rename() 通过 php 将文件从一个文件夹移动到另一个文件夹。
它适用于不包含瑞典语 å ä ö 字符的文件夹。
有没有办法解决这个问题? (除了将文件夹名称更改为没有特殊字符的名称)
网站完全是utf-8格式...
【问题讨论】:
我正在使用 rename() 通过 php 将文件从一个文件夹移动到另一个文件夹。
它适用于不包含瑞典语 å ä ö 字符的文件夹。
有没有办法解决这个问题? (除了将文件夹名称更改为没有特殊字符的名称)
网站完全是utf-8格式...
【问题讨论】:
查看rename() 的手册章节和用户贡献的说明,这似乎有点灰色地带。没有关于应该使用什么编码的消息。无论如何,如果文件系统支持它,应该可以在文件名中使用 UTF-8。
This SO question 有一个非常聪明的答案来解决这个问题。它不是 100% 纯种的,但在大多数情况下可能是可行的。
如果您使用的字符在iso-8859-1 中也可用,您也可以尝试一个简单的utf8_decode()。但这个解决方案并不完整,也不完美,因为它会在地图外的角色上失败。
【讨论】:
使用the unicode normalize functions 规范化文件路径?
filePath = unicodedata.normalize('NFD', filePath);
【讨论】:
这似乎是一个 bug,我不确定它是否已经解决。不过,您可以使用正则表达式来 clean file/folder names。或者正如 TheGrandWazoo 所指出的,您可以使用 normalizer 类。
【讨论】: