0

Windows インターネット ショートカット ファイル (.url) を作成するプロセスがあります。ファイルは UTF-8 でエンコードされています。ファイルには [InternetShortcut] セクションが含まれており、URL= が指定されています。この場合、これらは file:/// プロトコル URL であり、人々が LAN 上のパスを開くことを可能にします。URL はすべて UNC パスです。

通常、プロセスは正常に機能します。ただし、UNC パスに次のコード サンプルの「í」などの Unicode 文字が含まれている場合、エンド ユーザーが Windows エクスプローラーからインターネット ショートカットを開こうとすると、Windows は URL を「見つける」ことができません。

サンプル ファイルは次のとおりです。

[InternetShortcut]
URL=file:///\\lt-splourde\d$\POC\Montería Test\
IconIndex=1

上記のサンプル .url ファイルをテキスト エディターで開くと、適切な Unicode 文字を含むパスが表示されます。しかし、パスにアクセスするために Windows エクスプローラーからファイルを開こうとすると、Windows はパスにアクセスできないと報告し、Unicode 文字を壊しているようです。

これらのショートカットを作成するソース コードは次のとおりです。

private void CreateShortcutAsUrl(string uncRootPath, string name, string path, int projectId)
{
    path = path + (path.EndsWith(@"\") ? "" : @"\");

    using (StreamWriter writer = new StreamWriter(
        String.Format(@"{0}\{1}\{2}.url", uncRootPath,
            ShortcutsDirectory, new FileServerController().SanitizeNameForDirectory(name)),
            false, Encoding.UTF8)) 
    {
        writer.WriteLine(@"[InternetShortcut]");
        writer.WriteLine(@"URL=file:///" + path);
        writer.Flush();
    }
}

この問題の解決策を知っている人はいますか?

ありがとう!

(もともとスーパーユーザーに投稿していたのですが、よりプログラマー向けの内容になっている気がします)

4

1 に答える 1

1

に相当する .NET を試してみてください。つまりInternetCanonicalizeUrlSystem.Uri.EscapeUriStringこのようなものです (URI がszOriginalString

String szEscapedString = System.Uri.EscapeUriString(szOriginalString); 

次にszEscapedString、元の代わりに URI として記述します。

于 2013-06-13T15:22:04.423 に答える