2006年3月初,我开始抛弃Maxthon,换用Firefox。当时最直接的原因就是装上Wordpress中文包后,在IE和Maxthon浏览器里用备份插件进行数据库备份时会出错。当时花了点时间,熟悉了下Firefox,找了很多扩展来用,并将Maxthon彻底抛弃,乃至到现在,Firefox的扩展列表里躺着50多个小东西,呵呵。
说远了,折回来。前两天修改了Wordpress中文包,在Firefox里试用了一下没发现什么问题,就给发布到Blog上。今天突然想起备份插件出错的事,赶紧打开IE试了一下。在刚更新的Wordpress 2.0.3和我的中文包的环境下,问题依然如故。
说一下这个错误的重现过程:我的系统是win2000+IE 6.0 SP1,在进入Wordpress后台->管理->备份,点击备份按钮,进入备份页面,这是程序开始备份,并实时提示备份完成量和当前备份的内容。在Firefox下程序正常工作,而IE浏览器或者以IE为核心的浏览器如Maxthon,备份会停在4%,下方提示内容显示为乱码。
看到乱码,首先想到的就是编码问题。复制那串乱码,粘贴进记事本,存成ANSI格式文本文件。然后再双击这个文本文件,由于记事本会自动判断编码方式,他会自动以UTF-8方式解码,显示出正确的文本“正在生成备份文件...”。另外也可以用IE打开该文本文件,选择编码方式为UTF-8,也可以显示处正确文本。
IE的出错信息显示出错的地址是http://yskin.net/wp-admin/edit.php?page=wp-db-backup.php&fragment=wp_categories:0:yskin_wp_20060603_208.sql.gz ,想看看这个地址的内容,直接打开却显示不允许,只好打开IRIS进行嗅探。发现返回的是一串HTML代码,里面有一些javascript脚本,要显示的信息就是在js脚本里赋值给字符串再赋给innetHTML的。这部分内容是UTF-8编码的,而HTTP头里只写了Content-Type: text/html没有写明是UTF-8编码。于是不同的浏览器做了不同的处理,Firefox使用了UTF-8进行解码,而中文Windows下的IE使用了GB2312进行解码,导致出错。
解决的方法嘛,有三点:
- 治标:也就是不翻译这几个字符串,让程序还是使用原来的英文字符,这样无论按哪种编码解析都不会引起出错。
- 治本:修改IE的默认解析方式或者修改Wordpress的代码,让他在HTTP头里加上
Content-Type: text/html; charset=UTF-8 - 不治:这个最简单,既然会出错咱不用不就行了。手动备份本来就不怎么可取,不仅麻烦,而且容易忘记备份。人嘛,每天用的好好的哪会居安思危地想着要备份啊,只有丢失了数据才会后悔莫及。有一个很好的插件WP-Cron,Wordpress自带的数据库插件内置了对WP-Cron的支持,只要把他装上,数据库插件会自动在每天夜里12点备份数据库并发到指定邮箱。象我现在用的2.7G的Gmail邮箱,那么大的空间根本不怕塞满。我的email地址是yskins@gmail.com,就设置备份发往yskins+bakup@gmail.com,然后在gmail里设置过滤器,所有收件人是yskins+bakup@gmail.com的邮件存档并贴上“Blog备份”标签,这样就等着备份自动送到你的邮箱吧。
综上所述,推荐第三个方法,嘿嘿。
晕.我第一次装BLOG.
哎.原先没看到这文章,
捣弄了半天.
yskin能说下怎么完成下面这个步骤吗..
-----------------------------------------------
1.治标:也就是不翻译这几个字符串,让程序还是使用原来的英文字符,这样无论按哪种编码解析都不会引起出错。
-----------------------------------------------
目前我用的方法是再安装一个原版的wordpress,然后备份,虽然说确实第三个方法最佳(已经打算采用),不过比如现在想我这样新手摸索的时候,需要在做危险改动的时候备份下,就需要即时备份了
PS:有没有这样一款查件----编辑的时候,复制其他网页中包含图片的内容,然后提交,会自动保存图片的本地服务器的?一张一张图片插入太麻烦了
最后,在这学了好多东西(wordpress相关文章几乎都看了)
感谢yskin大大!
以前大家的标准办法是:备份数据库的时候先禁用中文包,也就是暂时把zh_CN.mo文件改下名或者把wp-config.php里的
define ('WPLANG', 'zh_CN');改回原来的样子。如果你临时需要备份一下数据库的话,照上面的方法改一下,或者直接进PHPMyAdmin备份也不错啊。这篇文章是6月初写的,两个多月过去了,现在我的PHP水平应该有所提高。既然到现在还是有人困惑于这个问题,我就再去仔细看一下代码,看看应该怎么修改,然后给出一个比较好的解决方案,这也就是“治本”中的修改WordPress源代码的方法。伤脑筋,用IE的人多,英文差必须要用中文包的人也多...
你所需要的自动保存图片到服务器的插件,如果硬要写倒是也可以写的出来,不过恐怕没哪个高手会去写它。高手们一般也都鼓励原创,从别的地方copy页面到Blog本身就是被鄙视的行为。如果要copy的页面的图片链接都是绝对链接并且图片所在的服务器没有反盗链措施的话,直接copy html代码过来也能显示正常。还有,虽然WordPress有很好的上传图片以及其他附件的机制,不过很多人还是喜欢用由专门的网站提供的图片存储服务,比如flickr。
搞定了,参见《Wordpress中文包引起数据库备份插件出错问题的解决方案》
-0-
偶就是一楼提问的那个.
本来想蛮进来看看.
一看到解决的方法出来的极度意外了下~~现在使用的wordpress一会了,本觉的这个bug无所谓了.(偶都无所谓.想来高手们更是不屑)
yskin大太体贴了,
感动一票.........
再偷一票...........
算了...把今天的10票感动点数都投在这了
另外.突然小小反省了一下,决定这个月学习yskin精益求精的精神.....
高手们都在用Firefox或者Opera呢,我也在用Firefox,所以对于这个问题,我只写了这篇文章放在这儿,就当是解决了。不过既然你留了言说还是想彻底解决一下,再加上最近PHP水平比以前强了点,就去仔细看了下代码,加了一句代码就解决了。
人总是懒嘛,如果bug影响到自己还想着去解决下,影响不到自己才懒得管呢。写插件也是,想要某方面的插件就去找一下,找不到或者找到的都觉得功能都不算太好就自己写一个。没有人愿意写一个自己都用不上的插件。
解决了的问题写到Blog里,方便别人通过Google搜索;遇到了问题到Google里搜索一下,看看有没有前人已经解决过。这样的话,世界将变得美好很多。就像黑客准则里说的:“一个问题不应该被解决两次。”
第三种方法要如何做呀???WP-Cron有多个插件,是要激活哪个?
激活叫“WP-Cron”的那个主插件,其他的都是利用WP-Cron主插件的功能执行一些任务的子插件。
Спасибки, приму во внимание