在 Windows 上提供 utf-8 文件功能的 php 库?

标签 php windows file encoding utf-8

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

PHP: setlocale in Windows 7

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

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

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

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

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

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

最佳答案

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

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

关于在 Windows 上提供 utf-8 文件功能的 php 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19797929/

相关文章:

linux - mmap 和 O_DIRECT 可以一起使用吗?

php - 如何使用 AJAX 返回两个字符串?

javascript - 如果有条件,Jquery 不会跳过 PHP

windows - 查看 nmake 发出的命令

ios - 尝试使用 swift 2.0 从 Document 目录中读取 plist 文件

java - 如何处理打开程序的文件

php - 如何在 PHP 中分配特定大小的内存块?

javascript - 在没有 iframe ID 的情况下从表 td 类访问 iframe

c# - System.Net.Sockets - 定义超时? (C#)

windows - 驱动器中没有磁盘。请将磁盘插入drive\Device\Harddisk\DR5