挽救 blog 上的 flickr 图片

Flickr 在不可阻挡的历史大潮中被和谐了,但妈呀,我的 blog 上的图片绝大多数是放在 flickr 上的,我必须要挽救它们!
看了半亩塘闲话的帖子,发现其实只是域名被和谐,IP 地址却幸存了下来,这么就好办了,图片在 flickr 上一般被存储在 static.flickr.com, farm1.static.flickr.com 和 farm2.static.flickr.com 上,所以我在数据库中把这三个地址替换成对应的 IP 地址就可以了。
以下的操作对象为 Wordpress 的数据库,其它类型的 blog 请自行参照修改。
在 phpmyadmin 的 SQL 中分别输入:
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, 'farm1.static.flickr.com', '68.142.232.116');
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, 'farm2.static.flickr.com', '69.147.123.56');
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, 'static.flickr.com', '68.142.232.116');
替换完成。
现在我的 blog 上的图片应该可以从国内访问了。
更新:花儿开了写了一个 Wordpress 插件,不用对数据库大动干戈了。
解决使用 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 不再显示 ?? 了。至此问题解决。
———
总结:
- 必须把数据库完全(包括 Table, Field, 和 Collation)变成 UTF-8 格式才能用 SQL 命令处理中文字符。
- Wordpress 似乎对中文的处理不太理想,必须手动添加一行代码。

