解决使用 MySQL 命令不能添加中文内容

下面来重现一下解决问题的过程。

我想为批量为我的blog上的一些帖子加上tag, 但不想一个帖子一个帖子的改,主要是太麻烦了,所以就想直接用 MySQL 命令来完成。我用的tag插件是 Jerome’s Keywords, 因此修改的主要的原理就是往数据库中的 wp_jkeywords 这个表里添加相应的 post_id 和 tag_name.

可以用命令:

INSERT INTO wp_jkeywords (post_id, tag_name) VALUES (帖子编号, tag名);

来完成。

不过在命令执行完后,我检查相应的帖子,发现所有的中文tag全部显示成了 ??, 第一个念头就是 Table 的编码不是 UTF8, 检查后发现已经是 UTF8 了。发信求助后在海豚的提醒下检查了一下 Collation 发现依然是默认的 latin1_swedish_ci 编码,不过由于没找到改变 Collation 的编码的选项,于是我在 wordpress 后台导出数据库,然后在 editplus 下把数据库中所有 character set latin1 改成 character set utf8 后重新导入, 然后在 phpMyAdmin 中检查导入的内容,发现所有的编码都已经变成 uft8 了。在 phpMyAdmin 后台看到中文数据显示正常,不再是以前看到的乱码。

接着打开我的 blog 后发现,所有的帖子内容都是 ?, 想起以前看到过的解决方案,于是打开 wp-include 目录把文件 wp-db.php 里

$this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);
这行下加上
$this->query("SET NAMES 'utf8'");

再打开 blog 后显示正常。

以后再用 SQL 命令添加中文 tag 不再显示 ?? 了。至此问题解决。
———
总结:

  1. 必须把数据库完全(包括 Table, Field, 和 Collation)变成 UTF-8 格式才能用 SQL 命令处理中文字符。
  2. Wordpress 似乎对中文的处理不太理想,必须手动添加一行代码。

Tags: , , , ,

为网站添加留言板新法

我在土路托的blog上看到他给出的的一个很好的留言板方案,可以不用任何插件建立一个留言板。我必须得说,这个想法很好,利用现有资源干最多的事,完全符合wordpress简单轻便的理念。只是这个方法对我来说并不是最完美的解决方案。

为什么?主要是因为留言板建立好了,由于是一篇最新文章,它必然就会显示在首页。而因为它不是一篇有“意义”的文章,这样就显得有些突兀,更没人愿意在看自己订阅的blog时,实然出来一篇文章叫“留言板”的……又因为wordpress没有让文章沉底的功能,所以必须得忍受一段时间让它在首页,直到新文章把它推到第二页去。这段时间对我来说,很难熬……

所以我想,如果新建一个page, 然后让这个page支持留言,不就一切问题就解决了吗?还省了修改sidebar.php文件把文章链接加进去这一步。

下面是怎样做:

在当前的theme目录下建立一个新的模板文件,起个名字,比如叫guestbook.php吧,然后把page.php里的所有内容都拷贝到guestbook.php里,再在文件开头上加上:

<?php
/* Template Name: Guestbook */
?>

然后在post loop里你认为合适的地方加上一下面这段:

<?php if ( comments_open() ) : ?>
<?php comments_template(); ?>
<?php endif; ?>

最后,新写一个page, 然后在右边选择Guestbook模板,写上你需要的内容保存后,万事大吉!恭喜你有了一个简单但实用的留言板了。

就是这么简单,可以到本blog的留言板去看看效果。

Tags: ,

换了一下主题

原来的主题不知道为什么在IE下显示有点不正常,界面看起来也花哨了些。Robin也说了:内容为主。所以把主题换成现在这个了,看起来清爽一点。主题中的英文我就懒得汉化了,应该都看得懂。

Tags: , ,

Pages: Prev 1 2 3 4 5