【发布时间】:2015-09-15 16:29:49
【问题描述】:
我正在尝试使用 Process.Start() 以 Unicode 符号开始 URL,但它给了 mit 一个 Win32Exception:
An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
Additional information: Das System kann die angegebene Datei nicht finden
(英文:“系统找不到指定的文件”)
我尝试调用的 URL 是 http://????.la(这是一个有效的 url,至少对于 Firefox 38)
在@Codo 的建议之后,我将代码更改为:
string link = "http://????.la";
try
{
Process.Start(link);
}
catch (System.ComponentModel.Win32Exception)
{
Process.Start("IExplore.exe", link);
}
【问题讨论】:
-
你试过 URL 转义格式吗? %F0%9F%92%A9 (graphemica.com/%F0%9F%92%A9)
-
您可以为您的示例选择更少的“冒犯”字符;-) 但无论如何。您始终可以使用 punycode 并将其提供给您调用的 API。
-
Process.Start("http://????.la");工作得很好。你做错了,我们看不到你做错了。使用大写 U 对高位计划中的 unicode 代码点进行编码。
-
@GuyMontag,以下两项在 Windows 8.1 和 IE 11 (11.0.9600) 上对我来说都可以正常工作:
Process.Start("http://xn--ls8h.la/");或Process.Start("IExplore.exe", "http://xn--ls8h.la/");。您的 Windows 和 IE 版本是多少? -
那是 Windows 7 Enterprise (64Bit, SP1) 和 IE 11