waf*_*ffl 7 apache unicode wordpress
我们最近将一个网站迁移到了一个新的服务器,并且遇到了一个奇怪的问题,其中一些上传的图像中带有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'/>
Run Code Online (Sandbox Code Playgroud)
SSH:
-rw-r - r-- 1 xxxxxxxx xxxxxxxx 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%CC%8Adn%C3%B8y_1_2.jpg
到底是怎么回事??
编辑:
如果我从wordpress源复制图像网址,我得到:
http://sjofasting.no/wp/wp-content/uploads/2011/11/Bore-Strand-Hotellg%C3%A5rd-12.jpg
从apache浏览器复制后,我得到:
http://sjofasting.no/wp/wp-content/uploads/2011/11/Bore-Strand-Hotellga%cc%8ard-12.jpg
什么可以解释这个差异:%C3%A5和%cc%8
??
bob*_*nce 11
Unicode规范化.
0xC3 0xA5 是U + 00E5 a-with-ring的UTF-8编码.
0xCC 0x8A 是用于U + 030A组合环的UTF-8编码.
U + 0035是编写A环的组合(Normal Form C)方式; aU + 030A之后的一个字母是分解(正常形式D)的写作方式.åvs å - 它们应该看起来相同,但它们可能会略有不同,具体取决于字体渲染.
现在通常情况并不重要,因为合理的文件系统使它们保持不变.如果保存名为[char U+00E5].txt(å.txt)的文件,它将在Windows和Linux下保持调用状态.
另一方面,Mac是疯狂的.文件系统更喜欢普通形式D,只要你传入它的任何组合字符转换成分解的字符.如果你把一个文件放入被调用[char U+00E5].txt并立即列出目录,你会发现你实际上有一个名为的文件a[char U+030A].txt.你可以仍然可以访问该文件作为[char U+00E5].txt一个Mac上,因为它会寻找它之前输入转换范式d太多,但你不能因为你把收回的字符序列方面相同的文件名:它是一种有损转换.
因此,如果您将文件保存在Mac上,然后转移到文件系统[char U+00E5].txt并a[char U+030A].txt引用不同的文件,您将获得损坏的链接.
更新页面以指向URL的Normal Form D版本,或者从文件系统重新上载文件,这些文件系统不会严重损坏Unicode字符.
认为不同,导致奇怪的互操作性问题.
| 归档时间: |
|
| 查看次数: |
2219 次 |
| 最近记录: |