我们有:
- 在 Linux 上运行的 webdav 服务器(java 应用程序)
- Windows 7 上的客户端,使用 ms-word 2010
打开文件的 URL 以文件名结尾,并在发送到 UI 之前以 UTF-8 进行编码:
server.com/path/my_file_name.doc
它可以完美地处理没有特殊字符但带有丑陋网址的文件名
server.com/path/En-tête de lettre + capital 1 050 000 €.doc
,我们的服务器无法访问该文件。 在堆栈跟踪中,我们可以看到服务器接收到的 url 是
server.com/path/En-tête de lettre + capital 1 050 000 �.doc
,但是ms-word显示的错误消息包含正确的url,所以我认为原始url是正确的。
最后但并非最不重要的一点是:当服务器在 Windows 平台上运行时它可以工作。
我认为 ms-word 在将 url 传输到服务器之前对其进行了重新编码,但我无法猜测如何对其进行解码。
欢迎提出建议^^
最佳答案
我是 http://milton.io 的作者(java webdav 服务器库)并且我看到了一个问题,MS 客户端对某些 url 进行了错误的编码,并且 milton 有一些解决方法。您使用什么 webdav 框架/服务器?
但是,给出的示例看起来更像是 mangling,正如 Marc B 所建议的。您的服务器可能以 UTF-8 格式输出 propfind 响应,但 Windows 将其解释为 win-1252。
因此,您应该查看响应 header 并检查为响应指定的字符编码,并检查它是否与 PROPFIND 响应中使用的实际编码相匹配。
请注意,早期版本的 milton 存在一个问题,即它们会使用服务器默认编码但始终报告 UTF-8,因此在任何不使用 UTF-8 作为默认字符编码的服务器上都会出现此问题。
关于java - webdav 协议(protocol)期间 Microsoft Word url 编码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164536/