如何使用带有unicode符号(如😜)的Process.Start()

本文关键字:何使用 Process Start #128540 unicode 符号 | 更新日期: 2023-09-27 18:12:48

我正在尝试使用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 

(中文:"The system can not find The file specified")

我尝试调用的URL是http:// .la(这是一个有效的URL,至少对于Firefox 38)

在@Codo的建议之后,我修改了我的代码:

string link = "http://  .la";
try
{
    Process.Start(link);
}
catch (System.ComponentModel.Win32Exception)
{
    Process.Start("IExplore.exe", link);
}

如何使用带有unicode符号(如😜)的Process.Start()

不要让Firefox欺骗了你。URL中不允许使用ASCII码以外的Unicode字符,特别是表情符号;它们需要被编码。Firefox是用户友好的,接受它们,显示它们,并在执行请求后自动对它们进行编码。

如果域名中包含Unicode字符,则需要对其进行Punycode编码。如果Unicode字符在域名之后,则需要对其进行URL编码。

您的案例的有效URL是:http://xn--ls8h.la/

试试这些:

http://xn--ls8h。洛杉矶/(Punycode)

http://%F0%9F%92%A9。la/(URL转义码)

看一下RFC 3986。url只能由US-ASCII字符组成