代码之家  ›  专栏  ›  技术社区  ›  jerry

我无法通过launchuriasync启动中文PDF

  •  0
  • jerry  · 技术社区  · 6 年前

    如标题所示,我正在尝试创建一个uwp应用程序,我想使用 Windows.System.Launcher.LaunchUriAsync API将启动一个中文名称的在线PDF,但它总是返回 false .

     var options = new Windows.System.LauncherOptions()
     {
         ContentType = "application/pdf"
     };
    
     options.UI.PreferredPlacement = Windows.UI.Popups.Placement.Above;
     var flag1 = await Windows.System.Launcher.LaunchUriAsync(
         new Uri("http://testserver/web/public/a.pdf"), options);
     var flag2 = await Windows.System.Launcher.LaunchUriAsync(
         new Uri("http://testserver/web/public/中文.pdf"), options);
    

    标志1的值为 true 但是旗子2总是 . 事实上 a.pdf 中文.pdf 是相同的pdf,我可以打开 http://testserver/web/public/中文.pdf 通过IE浏览器。

    请给我一些建议。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Martin Zikmund    6 年前

    我怀疑您需要使用URL编码对这些字符进行编码,以便它们在URL中安全使用:

    var chinese = Uri.EscapeUriString("中文.pdf");
    var flag2 = await Windows.System.Launcher.LaunchUriAsync(
           new Uri("http://testserver/web/public/" + chinese));
    

    尽管我必须提到,我可以成功地打开问题中的示例URL,即使不编码它。