规范化(webdav)unicode路径

时间:2010-03-26 11:04:53

标签: php unicode filesystems webdav iso-8859-1

我正在研究WebDAV implementation for PHP。为了使Windows和其他操作系统更容易协同工作,我需要跳过一些字符编码箍。

Windows在其HTTP请求中使用ISO-8859-1,而大多数其他客户端编码除ascii以外的任何UTF-8。

我的第一种方法是完全忽略这一点,但在返回网址时我很快遇到了问题。然后我认为最好将所有网址标准化。

以ü为例。这将由OS / X作为

通过线路发送
u%CC%88 (this is codepoint U+0308)

Windows将其命名为:

%FC (latin1)

但是,在%FC上执行utf8_encode,我得到:

%C3%BC (this is codepoint U+00FC)

我应该将%C3%BC和u%CC%88视为同一件事吗?如果是这样..怎么样?没有触摸它似乎适用于Windows。它以某种方式理解它是一个unicode字符,但更新同一个文件会引发错误(无特殊原因)。

我很乐意提供更多信息。

2 个答案:

答案 0 :(得分:1)

Mac将unicode字符存储为“已分解”,即“u”+¨(diaresis)而不是“ü”。 Normalizer可以照顾到这一点。如果您没有Normalizer,请尝试iconv('UTF8-MAC', 'UTF8', $str)

答案 1 :(得分:1)

我讨厌回答我自己的问题,但现在就去了。

我最终没有打扰。对各种操作系统如何编码和处理编码进行了广泛的研究。事实证明,在大多数情况下,使用其他规范化形式的其他操作系统的句柄路径都可以。虽然Windows工作有点糟糕,但它确实有用。

每当我收到一条完全不是utf8的路径时,我会尝试检测编码并将其转换为UTF-8。