We have developed a new Installer application using the p2 framework, and came across the following quite special problem:

If for the provisioning a local p2 repository is used (metadata and artifacts repository in the same location), and the local path to that repository contains the # character (e.g. "D:\test\repository_#1", which is a valid path on Windows), the provisioning fails inside the IEngine.perform(provisioningPlan, monitor) method. From the status message returned it looks like the path to the artifacts repository is cut at the position of the # character, i.e. p2 tries to copy from "D:\test\repository_".

The # character seems to be the only ASCII character causing this kind of issue which is allowed in a Windows file or folder name.
Accesses to the Metadata Repository in the same folder seem to work fine.

Is there any possibility to circumwent that issue, e.g. by replacing the # character in the URI with some escape sequence?

Also true when other 'forbidden' characters are used. One that I know of is the @ character. Windows allows it in file paths but this fails when p2 interprets the url to terminate at @. Just url encode the file path and you should be fine. in java you could simply do this via the URLEncoder class.
Regards,
Uma Sudhan