我对此代码有疑问:
CFStringRef URL = CFStringCreateWithCString(NULL, url.ToString().c_str(), kCFStringEncodingASCII);
CFURLRef pathRef = CFURLCreateWithString(NULL, URL, NULL);
if (pathRef) {
OSStatus status = LSOpenCFURLRef(pathRef, NULL);
我正在接收
形式的路径 "file:///Users/x/Documents/5%20Sample%20of%20Small%20Construction%20Plan%20(A0+).htg"
LSOpenCFURLRef设法使用上述路径打开文件,但是如果路径包含分号LSOpenCFURLRef失败并且-43(未找到)
如果我更换;使用%3B它可以工作,但这似乎是一个补丁,而不是解决方案。
如果传入路径是完全url编码的,则CFURLCreateWithString失败并返回NULL,因此我无法调用LSOpenCFURLRef
答案 0 :(得分:0)
使其工作我必须通过在CFURLCreateStringByAddingPercentEscapes中明确指定要转义哪些字符(添加到列表中)
来解除文本然后再次转义它