在windows上提供utf-8文件函数的php库?

在windows上提供utf-8文件函数的php库?,php,windows,file,encoding,utf-8,Php,Windows,File,Encoding,Utf 8,我正在从事一个项目,该项目需要进行大量的路径名操作。它在Mac OS X上运行良好,但令我惊讶的是,在Windows上无法调用utf-8编码字符串之类的函数。这是因为Windows上不支持utf-8: 我可以在内部创建调用和的包装器函数,但是php中有太多的文件函数,这给我带来了很大的负担 此外,该项目是开源的,因此当用户试图在自己的代码中使用my strings(这些字符串都是面向web的utf-8)来读/写文件时,用户可能会认为它是破坏性的 是否有提供主要php文件函数的utf-8版本

我正在从事一个项目,该项目需要进行大量的路径名操作。它在Mac OS X上运行良好,但令我惊讶的是,在Windows上无法调用utf-8编码字符串之类的函数。这是因为Windows上不支持utf-8:

我可以在内部创建调用和的包装器函数,但是php中有太多的文件函数,这给我带来了很大的负担

此外,该项目是开源的,因此当用户试图在自己的代码中使用my strings(这些字符串都是面向web的utf-8)来读/写文件时,用户可能会认为它是破坏性的

是否有提供主要php文件函数的utf-8版本的库?我更喜欢一个自包含的目录而不是一个扩展,这样我就可以把它和我的代码捆绑在一起

我担心的是,如果我找不到这样的库,可能是阿基里斯疗伤使php不适合我进行跨平台开发。我还好奇其他语言如Ruby、Python和C++如何解决这个问题,如果他们真的这么做的话。如果不是,这可能是对Windows的又一次攻击,我必须找出另一种解决方法。

Windows setlocale()函数(不是php,而是)不支持多字节编码。所以你是对的,在windows上设置utf-8语言环境是不可能的


但是,您不需要定义新函数。编写一个流包装器。可以由大多数与文件相关的函数使用,即使是内部函数,如在XSLT模板中加载文档。

路径名中是否必须支持非ansi字符?如果没有,根本不需要麻烦。是的,因为我想支持国际角色,比如ü和ñ。同样的问题。从未找到解决办法。此外,我不确定运行utf8_编码和重新编码是否可以工作。如果我记得在测试时,我在文件名中丢失了一些重音符号。看到了吗?要在文件名中支持国际字符吗?我敢肯定,即使你解决了与PHP相关的问题,你也会遇到大量其他操作系统特有的不可避免的问题。你真的应该重新考虑这个想法。如果必须这样做,那么将所有文件访问函数封装在自己的实用程序类中是一个很好的设计决策,该实用程序类管理对文件函数的调用。这还可以让你很快获得跨平台或操作系统的独立版本,更不用说为你的名字提供一个单独的位置了。但是,
utf8\u encode()
无法修复任何问题:Windows文件系统不使用ISO-8859-1。好的,谢谢。这就是我一直在寻找的答案类型。我的计划是用$locale=setlocale(LC_CTYPE,“0”)检索当前区域设置,并编写一个流包装器,在当前代码页内部使用iconv(),类似于下面的回答:我唯一的问题是,即使路径前面没有“file://”,像file_get_contents($path)这样的函数是否会调用包装器。我希望它能起作用,但如果不起作用,我会在这里报告。