ste*_*eps 7 php wordpress encoding
我已经将一个WordPress网站从Hostgator共享主机迁移到Ubuntu数字海洋LAMP堆栈.
当我导出具有特殊字符的图像文件(例如文件)时,问题就开始了
operários_tarsila-1024x640.jpg.
当WordPress尝试访问该文件时,它会显示错误.我找到了原因:
我可以通过Inspect Element看到Wordpress试图调用:http://mywebsite.com/wp-content/uploads/2013/02/oper%C3%A1rios_tarsila-1024x640.jpg并且服务器返回404错误.
但是,如果我在浏览器中键入此URL:http://mywebsite.com/wp-content/uploads/2013/02/opera%CC%81rios_tarsila-1024x640.jpg它可以工作并显示图像.
因此,似乎á从%C3%A1(á字符)到a+ %CC%81(组合精确重音)的编码之间的差异是导致WordPress不显示我的图像的原因.
所以现在我在我的服务器中有数千个重音图像文件名,结构character+ combining accent和WordPress调用带有结构的图像文件名accented character.
有没有办法用比较表重命名所有这些?或者是一种让Apache意识到这些差异的方法,并在发生这种混乱时指向正确的文件?
显然问题是如何在新服务器上解压缩备份.
有两种方法可以解决这个问题:
通过不带重音的名称手动重命名文件,然后修改数据库并更改数据库中的文件名(此maluco可能很危险,最好备份数据库).
使用Filezilla上传文件,但将其设置为强制使用UTF-8进行字符集编码.
文件>站点管理器> {您的站点}> Tab Charset>强制UTF-8
您是否尝试过在 PHP 脚本、Mysql 和 HTML 中设置相同的编码?
\n\nPHP: http: //php.net/manual/en/function.mb-internal-encoding.php
\n\nMySQL: http: //php.net/manual/en/function.mysql-set-charset.php
\n\nHTML:<meta http-equiv="content-type" content="text/html; charset=utf-8" />
这个问题看起来像是所有这些语言之间的字符集一致性问题。
\n\n如果这不起作用,您将不得不使用一个小脚本来重命名所有图片,使用如下函数:
\n\nfunction wd_remove_accents($str, $charset=\'utf-8\')\n{\n $str = htmlentities($str, ENT_NOQUOTES, $charset);\n\n $str = preg_replace(\'#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#\', \'\\1\', $str);\n $str = preg_replace(\'#&([A-za-z]{2})(?:lig);#\', \'\\1\', $str); // pour les ligatures e.g. \'œ\'\n $str = preg_replace(\'#&[^;]+;#\', \'\', $str); // supprime les autres caract\xc3\xa8res\n\n return $str;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n来源:http ://www.weirdog.com/blog/php/supprimer-les-accents-des-caracteres-accentues.html
\n| 归档时间: |
|
| 查看次数: |
7412 次 |
| 最近记录: |