Link 文件名中包含 utf-8 字符

Link to file with utf-8 character in the name

我不能 link 任何 images/files 名称中包含 UTF 字符。

例如。当我 link 图片到文件时,由于 "pi%C5%ka+no%C5%BCnaw.png"

出现错误

我试图找到解决方案,但他的似乎是光明会的秘密。

此问题的常见解决方法是什么?

简短的回答是,您必须先对任何 UTF-8 文本进行编码,然后才能在 URL 的 HTML 代码中使用它们,不要像您那样直接使用 UTF-8 文本做了。

对于您发布的 Piłka nożna.png 示例,它应该像这样进行百分比编码:

<img src="images/ikony/Pi%C5%82ka+no%C5%BCna.png">

详情

使用 encoding to ensure the browser correctly finds the file. HTML standards are supposed to support UTF-8 percent encoding 正确处理 URL 中的 UTF-8 值。

您可以使用 table 逐字符手动编码,但在线搜索免费的在线编码器更容易。

我刚刚找到并使用了 http://www.url-encode-decode.com/ :

输入您原来的 UTF-8 文件名:

Piłka nożna.png

输出编码版本:

Pi%C5%82ka+no%C5%BCna.png

所以我将其放入您的代码中以获得 HTML 需要的百分比编码 URL:

<img src="images/ikony/Pi%C5%82ka+no%C5%BCna.png">

但不要只是将所有内容输入并转换到这些在线转换器中。如果您输入了整个 URL images/ikony...,您会注意到正斜杠似乎也进行了百分比编码。我们选择不将 / 编码为 %2f 的原因是:

The / is a reserved character. It's not equivalent to %2f. If you need the slash without it's defined meaning, you'd use the encoded form.

来源:Why Does url-encoding the first slash after the domain break the url?

由于我们使用正斜杠来表示其预期的定义含义,以表示目录分隔符,因此我们将其保留为/而不更改。