doushi7394 2012-05-02 23:27
浏览 75
已采纳

MSExchange URL编码

I am writing a PHP service to query an Exchange server via WebDAV. This service has been live for roughly a month with no issues, but experienced a hiccup today when an email with the following subject line arrived in the mailbox:

FW: Daily Approval Report: Vendor/Master 007297

The message is stored in the file "FW: Daily Approval Report: Vendor/Master 007297.EML" and is referenced through a url as:

FW:%20Daily%20Approval%20Report:%20Vendor_xF8FF_Master%20007297.EML

I had been using the PHP rawurlencode() function to translate the message filename to its URL counterpart, but in this case rawurlencode() returns a mismatched string:

FW%3A%20Daily%20Approval%20Report%3A%20Vendor%2FMaster%20007297.EML

I'm no guru with Exchange and do not know how to match it's encoding. Can someone tell me if there is a mapping I can use to write my own function? I assume simply replacing / with \_xF8FF\_ and skipping colons will lead to chasing down this error again a month from now, but Google hasn't been helpful producing a full list of exceptions.

  • 写回答

2条回答 默认 最新

  • duanchun6148 2012-07-28 16:59
    关注

    I've googled around a bit, but I haven't been able to find the complete reference of characters that you're looking for.
    The only thing that I've discovered is that the following five characters have a special encoding in Exchange:

    • Forward slash '/' is encoded as _xF8FF_
    • Question mark '?' is encoded as _x003F_
    • Backslash '\' is encoded as _xF8FE_
    • Tilde '~' is encoded as _x007E_
    • Euro symbol '€' is encoded as _x0080_

    Maybe it could help to have a look at the source of the Ximian Connector for Microsoft Exchange, and more precisely at the "e2k_uri_append_encoded" function, at line 280.
    The Ximian Connector enables Ximian Evolution to function as a Microsoft Exchange client by communicating with Microsoft Exchange servers through the WebDAV protocol, so it has to deal exactly with the same problem you have encountered.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题