簡體   English   中英

規范化(webdav)unicode路徑

[英]Normalizing (webdav) unicode paths

我正在為PHPWebDAV實現 為了使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字符,但更新同一個文件會引發錯誤(沒有特別的原因)。

我很樂意提供更多信息。

Mac將unicode字符存儲為“分解”,即“u”+¨(diaresis)而不是“ü”。 Normalizer可以處理這個問題。 如果您沒有Normalizer,請嘗試iconv('UTF8-MAC', 'UTF8', $str)

我討厭回答我自己的問題,但現在就去了。

我最終沒有打擾。 對各種操作系統如何編碼和處理編碼進行了廣泛的研究。 事實證明,在大多數情況下,使用其他規范化形式的其他操作系統的句柄路徑都可以。 雖然Windows工作有點糟糕,但它確實有效。

每當我收到一個完全不是utf8的路徑時,我會嘗試檢測編碼並將其轉換為UTF-8。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM