I’m replying to my own post. Ok, I see how io_file_open() is using parameters, so ignore what I listed as the 2nd possible fix.
However I noticed that io_open() is calling io_urldecode *before* searching for the ? query separator. I think that’s a bug, it should search for the ? first and then url decode.
So i think the first fix is probably the right one, everything that takes a local file name and turns it into a file:// url needs to url encode before calling io_open().
Ah, yes. Exactly. Nice catch.