5

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

PHP:在 Windows 7 中设置区域设置

http://msdn.microsoft.com/en-us/library/x99tb11d.aspx

http://www.phpwact.org/php/i18n/utf-8

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

此外,该项目是开源的,因此当用户尝试在自己的代码中使用我的字符串(都是 utf-8 以面向网络)来读/写文件时,他们可能会认为它是破坏性的。

是否有提供主要 php 文件功能的 utf-8 版本的库?我更喜欢一个独立的目录而不是扩展,这样我就可以将它与我的代码捆绑在一起。

我担心如果找不到这样的库,可能是致命弱点导致 php 不适合我的跨平台开发。我也很好奇 ruby​​、python 和 c++ 等其他语言如何解决这个问题,如果他们这样做的话。如果没有,这可能只是对 Windows 的又一次打击,我将不得不找出另一种解决方法。

4

1 回答 1

1

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

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

于 2013-11-07T09:26:31.050 回答