ChriSir发现,使用WordPress中文包后,当有人发表评论时,如果出现错误,比如未填写email地址等,WordPress自动弹出的错误信息页面显示的是乱码。[via]
这个问题,不用说,又是页面的HTTP头没有表明页面是UTF-8编码格式的,导致用户的浏览器以GB2312方式解码,产生乱码。以前WordPress备份插件就出过这样的问题,参见我的这篇《WordPress中文包导致数据库备份插件出错》。WordPress是英语世界开发的,没有考虑到其他语言。所以,我们还是要自行解决这个问题。
ChriSir提到,乱码页面的地址是http://www.chrisir.com/wp-comments-post.php,查了一下,这个是WordPress发布评论的页面,文件的开头确实没有用header命令标识该页面为UTF-8编码。而这个页面只是发布评论,在发布完评论后就自动跳回,而只有在出错的情况下才会显示错误信息。这儿的乱码都能被ChriSir发现,他也真是细心呀。
修改一下,在wp-comments-post.php文件的开头require命令之后加上一句:
header('Content-type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
呃,或许,我们可以把这条header语句加到wp-config.php里,反正所有的页面都要调用这个文件的嘛。只有把这条header语句加到wp-config.php文件里,那么所有的页面都会被加上标识为UTF-8的HTTP头,这样乱码问题就应该不会再出现了,这个困扰N多人的问题也许就被彻底解决了,hoho
Update:ChriSir说,直接把上面的代码加入wp-config.php文件后没起作用。[via]这一点我没说清楚,wp-config.php是整个程序最先执行的文件,在这个文件里的代码当然不能使用类似get_option()之类的函数,这些函数在这个时候还没有定义呢。所以,需要把生成的header直接写入这里,比如你的网站是UTF-8编码的,就写header('Content-Type: text/html; charset=UTF-8');就可以了。不过,不知道定义把页面定义为html格式,会不会对一些JavaScript页面有影响耶。
Thanks!I revised it.
你的评论有时候也出问题
哦,误报,刚才研究了一下,确定404的原因是Google Web Accelerator。。。
不是这里的问题。。。
我想问问为什么我的WordPress上用不了像YUTUBE这样的视频代码,然后我把它们放在一个HTML页面以后然后用来调用这个页面,可以是可以,但是/iframe后面的代码都显示不出来,搞得那片文章的后面留不了言,这个是为什么??
我看到别人的WP又可以贴这些视频,而我的就是不可以,我用的是2.05,难道是虚拟服务器的问题?还是WP代码中哪里出问题了??
embed标签会被TinyMCE过滤掉。
修改TinyMCE,又或者,别用可视化编辑器了。
Yskin,竟然把你搞到无语,HaHa...
blog的信息互通和blogger之间的互助让人鼓舞!不过,最近不再trackback骚扰你了^-^
不论怎样,感谢你提供的帮助!
一个更好的解决方法是讲 die 函数修改为 WordPress 自带的 wp_die。
详见这个主题:
http://www.gtp2p.com/bbpress/topic.php?id=3&replies=6
嗯,好主意
谢谢
再想问问,怎样使到像你BLOG页头的页面链接是类似“http://yskin.net/about/”这样的形式的,在哪里设置?
还有你的每篇文章的页面地址都是用文章题目命名的,这样很好啊!怎样实现的?
谢谢!
选项->永久链接。选个好一点的永久链接格式吧。另外页面地址可以用文章的缩略名,设置好永久链接格式之后,记得每次写文章时填写文章缩略名。
opq565
http://www.quicko.cn
bcd288
http://www.quicko.cn
ghi893
http://www.quicko.cn
opq224
http://www.quicko.cn
jkl887
http://www.quicko.cn