我无法通过LaunchUriAsync

时间:2018-10-17 01:59:12

标签: c# uwp launcher

正如标题所示,我正在尝试创建一个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);

flag1的值为true,但flag2始终为false。 实际上a.pdf中文.pdf是相同的pdf文件,我可以通过IE浏览器打开http://testserver/web/public/中文.pdf

请给我一些建议。

1 个答案:

答案 0 :(得分:0)

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

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

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