【问题标题】:How to use Process.Start() with unicode-Symbols (such as ????)如何将 Process.Start() 与 unicode-Symbols 一起使用(例如 ????)
【发布时间】: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

标签: c# .net unicode


【解决方案1】:

不要让 Firefox 愚弄您。 URL 中不允许使用 ASCII 码之外的 Unicode 字符,尤其是表情符号;它们需要被编码。 Firefox 是用户友好的,接受并显示它们,但在执行请求后会自动对其进行编码。

如果域名中有Unicode字符,则需要进行Punycode编码。如果 Unicode 字符在域名后面,则需要进行 URL 编码。

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

【讨论】:

  • 嗨,到目前为止,谢谢你,很高兴知道。不幸的是Process.Start("http://xn--ls8h.la/") 产生了同样的错误(可能会尝试转换 punycode 并以与以前相同的 url 结束......?)
  • 你能用你的代码打开任何 URL 吗?真的和表情有关吗?
  • 它与表情符号有关,这是肯定的。我可以提供代码示例,但任何 url 都可以正常工作(甚至路径中的表情符号,例如:en.wikipedia.org/wiki?)。但是域名中的表情包会产生异常
  • 您使用的是什么版本的 Windows?你的默认浏览器是什么?其他人也有类似的问题,但与表情符号没有特别相关。你试过stackoverflow.com/a/20509782/413337 吗?
  • 这是 Windows 7 企业版,默认浏览器是 Firefox。我明天将尝试您链接的解决方案。提前致谢
【解决方案2】:

试试这些:

http://xn--ls8h.la/(弱代码)

http://%F0%9F%92%A9.la/(网址转义码)

看看RFC 3986。 URL 只能由 US-ASCII 字符组成。

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2011-04-15
    • 2014-08-27
    • 1970-01-01
    相关资源
    最近更新 更多