LSOpenCFURLRef不会打开文件;

时间:2017-02-23 12:58:00

标签: objective-c xcode macos

我对此代码有疑问:

    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

1 个答案:

答案 0 :(得分:0)

使其工作我必须通过在CFURLCreateStringByAddingPercentEscapes中明确指定要转义哪些字符(添加到列表中)

来解除文本然后再次转义它