Octopress插件:octopress-tagcloud相当nice,不过在使用的时候,若是blog整体采用了非ascii码的编码格式(比如utf-8)就会出现类似这样的错误:
Liquid error: incompatible encoding regexp match (ascii-8bit regexp with utf-8 string)
其实是由于octopress-tagcloud的插件文件:plugins/tag_cloud.rb
文件本身是ascii编码所致:
$ chardet tag_cloud.rb
tag_cloud.rb: ascii (confidence: 1.00)
tag_cloud.rb
中很多地方用到了ruby的正则表达式,而ruby的正则表达式在匹配的时候,默认是按照“代码源文件”的编码格式(在这里是ascii)进行匹配的,而若我的blog是utf-8编码的话就会出现上述错误。
解决办法有二:
- 将
tag_cloud.rb
转成utf-8…
- 更改
tag_cloud.rb
中所有的正则表达式声明,加上u
选项(根据这里的说明,u
的意思就是以utf-8编码格式来进行匹配),即,若原正则式是:/regexp/
, 则改成:/regexp/u
这里是我改好的tag_cloud.rb
: