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

服务器迁移后图像文件名中的特殊字符编码

杨星纬
2023-03-14

我已经将WordPress网站从Hostgator共享主机迁移到Ubuntu数字海洋灯堆栈。

当我导出具有特殊字符的图像文件时,麻烦就开始了,例如文件opários_tarsila-1024x640.jpg

当WordPress试图到达该文件时,它显示一个错误。我找到了原因:

我可以通过Wordpress试图调用的Inspect元素看到:http://mywebsite.com/wp-content/uploads/2013/02/operários_tarsila-1024x640.jpg,服务器返回404错误。

但是,如果我在浏览器中键入此URL:http://mywebsite.com/wp-content/uploads/2013/02/operários_tarsila-1024x640.jpg它可以工作并显示图像。

因此,从字符(字符)到字符(字符)的编码与字符(́)的编码之间的这种差异似乎是导致WordPress无法显示我的图像的原因。

所以现在我在我的服务器上有成千上万的重音图像文件名,结构字符结合重音和WordPress调用具有结构重音字符的图像文件名。

有没有一种方法可以让bash用一个comparison表来重命名它们?还是一种让Apache意识到这些差异并在出现这种混乱时指向正确文件的方法


共有3个答案

勾向文
2023-03-14

我们有同样的问题——SK语言中的Mac FileZilla特殊字符。

使用另一个FTP客户端(本例中为Cyberduck)修复了该问题。

FileZilla文件名编码似乎有问题。强制utf8编码(FileZilla主机设置)没有帮助。

贝凯
2023-03-14

所以,只是触及这个问题和一个对我有效的解决方案...我还迁移了一个Wordpress网站,发现所有文件名中带有特殊字符的图像在迁移后都会产生404。

最后,我不得不通过phpMyAdmin手动重命名和编辑数据库。这是一项艰巨的任务,我绝对建议您首先备份数据库。

在我的例子中,我有大量的媒体附件,它们的文件名中使用了特殊字符

首先,我通过删除字符在本地重命名文件。我用了1-4a重命名。只是找到了文件名,并将其替换为空(甚至没有空格)。然后,我从文件夹中删除了所有旧文件,并用新文件替换它们。

接下来,我进入数据库更新表值。媒体附件的信息存储wp_postswp_postmeta表中。下面是我更新的SQL-

update wp_posts set guid = replace(guid,'©','');

UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '©', '') 
WHERE LOWER(RIGHT(meta_value, 5)) = '.jpeg' OR 
LOWER(RIGHT(meta_value, 4)) IN ('.jpg', '.gif', '.png')

同样,我们用什么都没有代替角色,甚至没有空格。

我不得不使用WP插件重新生成缩略图,以便更新所有不同附件大小的缩略图,但这样做了。

我真的很感谢大家在这篇文章上的努力,这篇文章帮助我解决了这个问题!希望这对别人有帮助!

翁昊乾
2023-03-14

显然,问题在于如何在新服务器上解压缩备份。

有两种方法可以解决此问题:

>

  • 以不带重音符号的名称手动重命名文件,然后修改数据库并更改数据库中的文件名(这种情况很危险,最好备份数据库)。

    使用Filezilla上传文件,但将其设置为强制使用UTF-8字符集编码。

    文件

  •  类似资料:
    • 问题内容: 我试图编写一个文件名带有特殊字符的文件,例如“téééê.mp3”,但文件名始终保留“?” 我尝试了几种方法来代替字符“é”,但没有找到解决方法: 我也尝试过这种方式。 问题答案: 尝试: 现在,如果这是您的文件系统不支持此类文件名的问题,您将得到一个;。不同于,新的API拒绝创建可能最终无法读取的文件名。 如果确实无法创建路径,那么,您将必须找到某种逃避和撤消逃避的方法。也许写一个别

    • 我有一个问题,下载文件有特殊字符在它像"ñ"或"的"。 我正在对每个文件名应用rawurlencode()。但是当我走上这条路线时,apache正在重写我的url。 当我检查a标签中的href时,我得到了正确的URL编码路由,如下图所示。 带有编码url的标记 但是当我点击链接时,编码的数据丢失了 点击链接后丢失编码 这里是我的apache配置

    • 相关网站:http://nubix.ca/blog/we-have-a-drone-and-were-prepared-to-shot/

    • 问题内容: 我正在编写一个简单的文件下载servlet,但无法获取正确的文件名。尝试使用URLEncoding和MimeEncoding在现有答案中看到的文件名,但没有一个起作用。 以下代码段中的fileData对象包含mime类型,byte []内容和文件名,它们至少需要ISO-8859-2字符集,而ISO-8859-1不够。 如何使我的浏览器正确显示下载的文件名? 这是文件名的示例:árvíz

    • 我有一个带有一些特殊字符的mysql数据库,一个输入表单,一些PHP页面。 > 这个页面发送(通过GET)一个参数到另一个php页面(ResultsPage)。 最后这个php页面(ResultsPage)向dbms发送一个带有参数的查询并显示结果。 RequestPage编码为utf-8至 meta http equiv=“Content Type”Content=“text/html;char

    • 问题内容: 我在编译带有类名特殊字符的源文件时遇到问题。该类文件可以在Eclipse IDE中正常编译,但不能从javac中编译。我认为我需要利用该标志,但尚未达到正确的设置。我将不胜感激任何指针: 档案名称: DeptView和SDO.java Java资料来源: 错误信息: 运行会导致以下错误消息: 更新 我目前正在Windows XP命令提示符下尝试编译 最终,此编译将需要成为ant构建的一