您的位置: 首页 / PHP / WordPress 2.0.2 上传图片标题乱码解决

WordPress 2.0.2 上传图片标题乱码解决

Published at Apr 26, 11pm / Keywords: , , , ,

上传文件描述乱码是 WordPress 的一个“固有”的 Bug 了。自从 1.5 版就有,当时我还专门写文章说明了解决办法。WordPress 升级到了 2.0.2,这个 Bug 却依然存在,虽然修改方式略有变化,但原理都是相同的,就是没有正确处理 PHP 函数 htmlentities() 的编码问题。

问题现象:撰写文章时,用书写界面下方的上传文件对话框可以上传附件。当在标题处键入非拉丁字符(多字节字符)时,上传成功后附件的描述为乱码。

解决方案:1. 打开 /wp-includes/functions.php,找到函数 function htmlentities2($myHTML),将此函数按如下替换:

  1. <?php
  2. function htmlentities2($myHTML) {
  3.     return preg_replace("/&amp;([A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&$1",htmlentities($myHTML,ENT_QUOTES,get_settings('blog_charset')));
  4. }
  5. ?>

2. 打开 /wp-admin/inline-uploading.php,搜索 htmlentities(,应该有两处,分别位于 237 行和 257 行,按如下更改:

  1. <?php
  2. // 237 行,原始代码为:
  3. $title = htmlentities($image['post_title'], ENT_QUOTES);
  4. // 修改为
  5. $title = htmlentities($image['post_title'], ENT_QUOTES,get_settings('blog_charset'));
  6.  
  7. // 257 行,原始代码为:
  8. $title = htmlentities($attachment['post_title'], ENT_QUOTES);
  9. // 修改为
  10. $title = htmlentities($attachment['post_title'], ENT_QUOTES,get_settings('blog_charset'));
  11. ?>

以上代码测试通过 (WordPress 2.0.2) ,并已经应用于本站。

发表您的观点或推荐本文 Loading...

12 Responses

  1. Apr 27, 12am / LINK / REPLY
    Gravatar

    谢谢,dashborad的问题解决了。

  2. May 2, 3pm / LINK / REPLY
    Gravatar

    谢谢,已经弄好了。

    我在sendToEditor函数里面加了h = h.replace(“height=96″,”");
    我不想让它限制图片的高度。

    不过我不会写正则 只有这样写了

  3. 感谢花儿开了
    Sep 9, 9am / LINK / REPLY
    Gravatar

    这个问题困扰我很久了,感谢花儿开了,感谢Google,相逢是缘

  4. 感谢花儿开了
    Sep 9, 9am / LINK / REPLY
    Gravatar

    也希望早点搞一下2.0.4,那个文件名的问题更是古怪了。

  5. May 16, 5pm / LINK / REPLY
    Gravatar

    这个办法在 windows 服务器上是可以的,但在 linux 服务器上时,还是会有问题。比如我曾经遇到的一种情况:
    server 端默认语言为 GBK; 而运行其上的 wordpress 却是 UTF8 的。因为 getsettings(‘blogcharset’) 是 ‘UTF-8′,按此 charset 创建出来的文件名,通过 ftp 是无法辨认的,这会对网站数据备份,及附件管理造成很大的不便。
    从而在此情形下的修改也就不像原文当中想象的那样顺畅了!

Now, It's your Turn!

BACK TO Article / Comments