当前位置: 首页 > 知识库问答 >
问题:

Wordpress/Apache-404图像文件名中出现unicode字符错误

梁丘琛
2023-03-14

我们最近将一个网站移动到了一个新的服务器上,遇到了一个奇怪的问题,一些上传的文件名中带有unicode字符的图像给了我们一个404错误。

通过ssh/FTP,我们可以看到文件肯定在那里。

例如:

http://sjofasting.no/project/adnoy

没有一个图像是工作:

代码

<img class='image-display' title='' src='http://sjofasting.no/wp/wp-content/uploads/2012/03/ådnøy_1_2.jpg' width='685' height='484'/>

宋承宪:

-rw-r--r--1 XXXXXXXXXXXXXXXX 836813年8月3日16:12ådnøy_1_2.jpg

同样奇怪的是,如果您导航到该目录,您甚至可以单击该图像并使其工作:

http://sjofasting.no/wp/wp-content/uploads/2012/03/

点击“ådnøy_1_2.jpg”就可以了。

不知何故,wordpress正在生成

http://sjofasting.no/wp/wp-content/uploads/2012/03/ådnøy_1_2.jpg

并且正在生成从直接文件夹浏览进行复制

http://sjofasting.no/wp/wp-content/uploads/2012/03/a的y_1_2.jpg

发生了什么事??

编辑:

如果我复制图像url从wordpress源我得到:

http://sjofasting.no/wp/wp-content/uploads/2011/11/Bore-Strand-Hotellgård-12.jpg

从apache浏览器复制时,我得到:

http://sjofasting.no/wp/wp-content/uploads/2011/11/Bore-Strand-Hotellgård-12.jpg

??

共有1个答案

郎翔
2023-03-14

Unicode标准化。

0xC30xA5是U00E5 a with-ring的UTF-8编码。

0xCC0x8A是U 030A组合环的UTF-8编码。

U 0035是编写a形环的组合(标准形式C)方式;一个a字母后跟u030a是一种分解(标准形式D)的书写方式<代码>å与å-它们看起来应该相同,尽管它们可能会根据字体呈现略有不同。

现在,通常情况下,使用哪一个并不重要,因为合理的文件系统不会影响它们。如果保存一个名为[char U 00E5].txt的文件(å.txt),则在Windows和Linux下它将保持该名称。

另一方面,苹果电脑是疯狂的。文件系统更喜欢普通表格D,因为您传递给它的任何组合字符都会转换成分解的字符。如果您将一个名为[char U 00E5]. txt的文件放入并立即列出目录,您会发现实际上有一个名为a[char U 030A]. txt的文件。您仍然可以在Mac上以[char U 00E5]. txt的形式访问该文件,因为在查找之前,它也会将输入转换为普通表格D,但是您无法恢复与输入的字符序列项相同的文件名:这是一个有损转换。

因此,如果您将文件保存在Mac上,然后传输到文件系统,其中[char U 00E5]. txt一个[char U 030A]. txt引用不同的文件,您将获得断开的链接。

更新页面以指向URL的正常Form D版本,或者从不会严重损坏Unicode字符的文件系统重新上载文件。

思维不同,导致奇怪的互操作性问题。

 类似资料:
  • 我想用Apache POI获取我的PowerPoint的图像名称,但不正确,它总是“image1.jpeg”(或不同的数字) 要自定义图像的名称,我转到“选择面板”。自定义图像名称 不是有办法弄个图像名或者id吗

  • 我尝试了很少的东西来验证我的理论,即修改主体是在破坏unicode字符。以下是我尝试的路由:1)从(文件).to(文件)->Unicode字符被保留2)从(文件).split(body()).streaming().to(文件)->Unicode字符被保留3)从(文件).convertbodyto(string.class,“UTF-8”).split(body()).streaming()->U

  • 我将nginx设置为图像服务器(唯一的目的是为应用程序提供图像)。我将其配置为在特定端口上侦听,并将根目录设置为包含所有图像的文件夹。如果我导航到http://localhost:8088我收到了nginx欢迎页面(因此我知道它正在工作)。但是如果我试图通过导航到http://localhost:8088/alcala/images/myimage.jpg,我有一个404。我已经确定root是文件

  • 问题内容: 我将包含诸如 PéréquationLES HOPITAUX NEUFS.xls之 类的特殊字符 压缩 到另一个文件夹中,例如 temp 。 我可以压缩文件,但是问题是文件名自动更改为 P +¬r+¬报价LES HOPITAUX NEUFS.xls 。 如何在zip归档文件中支持Unicode字符作为文件名? 问题答案: 这一点取决于您用于创建存档的代码。在 旧 的Java压缩类不是很

  • Jenkins中的Git checkout抛出错误“filename too long”并失败,如下所示: hudson.plugins.git.gitException:命令“git.exe checkout-f 2CEA7D8EB9185899C01D2FFC86872F584DA2E60C”返回状态代码1: stdout: stderr:错误:无法创建文件some_long_named_pr

  • 问题内容: 例如,我有一个这样的文件名-проба.xml,但无法从PHP脚本中打开它。 如果我将php脚本设置为utf-8,则脚本中的所有文本均为utf-8,因此当我将其传递给file_get_contents时: 我收到文件不存在的错误。这样做的原因是,在Windows(XP)中,所有带有非拉丁字符的文件名都是Unicode(UTF-16)。好,所以我尝试了这个: 但是错误仍然存​​在,因为f