2017-02-23 2 views
0

私は、このコードに問題があります。私は、フォーム内のパスを受けていますLSOpenCFURLRefはファイルをオープンしません。

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を返しますので、私は、テキストをエスケープ解除して、明示的にCFURLCreateStringByAddingPercentEscapes文字に指定することで、再びそれを逃れるために持っていたそれを動作させるためにLSOpenCFURLRef

答えて

0

を呼び出すことはできませんエスケープ(リストに追加)

関連する問題