前些日子经若亮童鞋提醒,我在其他推荐的页面中增加了对 Dropbox 和 Linode 等工具的推荐,一来分享这些好用的产品,二来期望刚接触这些工具的好心的朋友可以不吝啬时间用我的推荐码注册,让我获得一些分享的回报。

改过页面内容后,照常的使用rake preview命令生成预览页面,打开浏览器,得到的却是一行孤零零的

Sorry, I can not find /

rake generate后的结果更悲惨:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
biaobiaoqi.github.com git:(source) ✗ rake generate
## Generating Site with Jekyll
unchanged sass/screen.scss
Configuration from /Users/shenyapeng/Development/biaobiaoqi.github.com/_config.yml
Building site: source -> public
/Users/shenyapeng/Development/biaobiaoqi.github.com/plugins/raw.rb:11:in `gsub': invalid byte sequence in UTF-8 (ArgumentError)
from /Users/shenyapeng/Development/biaobiaoqi.github.com/plugins/raw.rb:11:in `unwrap'
from /Users/shenyapeng/Development/biaobiaoqi.github.com/plugins/octopress_filters.rb:18:in `post_filter'
from /Users/shenyapeng/Development/biaobiaoqi.github.com/plugins/octopress_filters.rb:33:in `post_render'
from /Users/shenyapeng/Development/biaobiaoqi.github.com/plugins/post_filters.rb:124:in `block in post_render'
from /Users/shenyapeng/Development/biaobiaoqi.github.com/plugins/post_filters.rb:123:in `each'
from /Users/shenyapeng/Development/biaobiaoqi.github.com/plugins/post_filters.rb:123:in `post_render'
from /Users/shenyapeng/Development/biaobiaoqi.github.com/plugins/post_filters.rb:151:in `transform'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/gems/jekyll-0.12.1/lib/jekyll/convertible.rb:88:in `do_layout'
from /Users/shenyapeng/Development/biaobiaoqi.github.com/plugins/post_filters.rb:167:in `do_layout'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/gems/jekyll-0.12.1/lib/jekyll/page.rb:100:in `render'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/gems/jekyll-0.12.1/lib/jekyll/site.rb:204:in `block in render'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/gems/jekyll-0.12.1/lib/jekyll/site.rb:203:in `each'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/gems/jekyll-0.12.1/lib/jekyll/site.rb:203:in `render'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/gems/jekyll-0.12.1/lib/jekyll/site.rb:41:in `process'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/gems/jekyll-0.12.1/bin/jekyll:264:in `<top (required)>'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/bin/jekyll:23:in `load'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/bin/jekyll:23:in `<main>'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/bin/ruby_executable_hooks:15:in `eval'
from /Users/shenyapeng/.rvm/gems/ruby-1.9.3-p545/bin/ruby_executable_hooks:15:in `<main>’

似乎是编码的问题:invalid byte sequence in UTF-8,但是我只是修改了普普通通的几行文字而已,怎么会有编码问题呢。

恰逢自己刚因为 SSD 损坏重装了系统,编程环境也是刚刚配好,而且使用 rvm 安装 ruby1.9.3 的时候,提示文字中也有一些 warning。我开始怀疑是不是 ruby1.9.3 没编译好的原因。

设立对照实验,我在另外一台 Ubuntu 机器上 clone 下一个博客的 repo,rake generate,结果竟然一切顺利。一切似乎都在说明就是开发环境的问题。

我删除了之前的 ruby1.9.3,甚至是 rvm,重装后结果依旧。

不能在一棵树上吊死,我不科学的将目标重新定位到 markdown 页面中的编码错误上(没想到后来事实证明奏效了……)。

在 git 中新开启测试分支,在上面做回滚,测试修改页面内容前源码能否 generate

1
2
3
4
5
#>git branch checkError
#>git checkout checkError #>git log #找到修改前的提交码
#>git reset --hard xxx #xxx 为相应的提交码

然后rake generate竟然能成功= =#!,看来真的是修改的页面掺入了错误的编码。

接下来是回到原来的分支上,通过 diff 命令定位错误代码:

1
2
3
4
#>git checkout source
#>git branch -d checkError #删除测试分支 #>git diff xxx #xxx 为相应的提交码

比较结果如下图,果然是有一个奇怪的字符。

查了下,这是左至右符号。莫非是从 chrome 浏览器复制地址时,不小心复制了它?

进一步尝试发现,这个字符如果不与)相邻,是不会造成编码问题的。与)相邻时,一旦他们被 markdown 解析后,就出现了这个 bug。

有意思的是,另一台 Ubuntu 服务器上这个有编码隐患的 repo 时能够正常rake generate的。如下图,左边是 mac 上用 vim 打开包含隐患字符的文件截图,右边是 Ubuntu 上的截图。

谁能告诉我理解这一现象的思路呢 ><…

 原文地址:http://biaobiaoqi.me/blog/2014/03/06/troubleshoot-encoding-bugs-in-octopress/
 版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0

记排查octopress生成时的编码错误的更多相关文章

  1. installshield生成时提示6003错误的一种可能

    因为项目需要,2014年写过的一个老项目需要重新打包.开发电脑换了,原来开发的系统是win7,现在已经升到了win10.而且原来使用installshield limited 2013开发的打包项目已 ...

  2. 记使用WaitGroup时的一个错误

    记使用WaitGroup时的一个错误 近期重构我之前写的server代码时,不当使用了WaitGroup,碰到了个错误,记录下. package main import ( "fmt&quo ...

  3. 记一次python编码错误

    摘要: 断断续续写python一段时间了,让我说python最令我头疼的问题,莫过于编码问题.最近做大论文,使用python再次出现编码报错.错误如下: "UnicodeEncodeErro ...

  4. 火狐firefox提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。”

    火狐firefox浏览器打开网也是时提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式.” 今早一来打开用PHPCMS做的网站时就提示这个错误,用其他浏览器打开提示的是 ...

  5. python编码错误

    初学python,遇到的最难忘的坑没有之一.这个问题起码困扰了我一周.在我写了一段代码之后经常遇见这样的报错. 本质原因是我用的python2,在编码流派中python2是比较奇葩的一派,不随大流.所 ...

  6. linux 关于Apache默认编码错误 导致网站乱码的解决方案

    Apache默认编码UTF-8在解析A网站的时候没有任何问题,当运行B网站时出现的"蝌蚪文"乱码问题   最近经常有同学在使用LAMP/WAMP时,遇到这样的编码错误问题: A网站 ...

  7. Intellij Idea编译项目下的.java文件时的编码问题

    Intellij Idea编译项目下的.java文件时的编码问题 原创 2015年07月22日 21:45:14 10510 由<编译.java文件时的编码问题>可知,在编译.java文件 ...

  8. python运行显示编码错误

    python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...

  9. VS2008项目使用VS2015打开时,出现错误: error CS1012: Too many characters in character literal

    VS2008项目使用VS2015打开时,出现错误: error CS1012: Too many characters in character literal ------------------- ...

随机推荐

  1. Loadrunner--基准测试的两种方法

    2 练习基准测试方法1 2.1 问题 为登录业务设计场景. 2.2 方案 在控制台中使用循环多次的方式执行场景.(多次数) 2.3 步骤 实现此案例需要执行以下步骤: 步骤一: 1.打开控制台,如下图 ...

  2. jmeter--错误之Not able to find Java executable or version. Please check your Java installation. errorlevel=2

    学习jmeter中遇到的问题: 'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件. Not able to find Java executable or version. Pl ...

  3. 【习题 3-9 UVA - 10340】All in All

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 相当于让你判断s1是不是s2的子序列. for一遍就好 [代码] #include <bits/stdc++.h> us ...

  4. 关于Android中设置闹钟的相对比较完善的解决方案

    我当时说承诺为大家写一个,一直没空,直到最近又有人跟我要,我决定抽时间写一个吧.确实设置闹钟是一个比较麻烦的东西.我在这里写的这个demo抽出来了封装了一个类库,大家直接调用其中的设置闹钟和取消闹钟的 ...

  5. 8、hzk16的介绍以及简单的使用方法

    HZK16 字库是符合GB2312标准的16×16点阵字库,HZK16的GB2312-80支持的汉字有6763个,符号682个.其中一级汉字有3755个,按 声序排列,二级汉字有3008个,按偏旁部首 ...

  6. vc弹出USB的方法. 附试验通过的代码!

    vc弹出USB的方法. 附试验通过的代码! http://blog.sina.com.cn/s/blog_4fcd1ea30100qrzn.html (2011-04-15 10:09:48) boo ...

  7. 【u248】交通序列号

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 在一条笔直的道路上共有N个路口,每个路口处都有关于该条道路的通行的信号灯. 显然,信号灯共有绿(G). ...

  8. LVS负载均衡+动静分离+高可用(nginx+tomcat+keepalived)

    文章目录 [隐藏] 一.环境介绍 二.环境安装 1.安装JDK 2.两台服务器安装tomcat 3.nginx安装 4.keepalive安装 三.负载均衡 四.动静分离 五.keepalive高可用 ...

  9. 一次修复IncrediBuild Coordinator服务的经历

    作者:朱金灿 来源:http://blog.csdn.net/clever101 早上发现部门的分布式编译服务的服务端崩溃了,原来是IncrediBuild Coordinator服务启动不了.启动该 ...

  10. GridView在PopWindow中OnItemClick不响应

    在安卓4.0系统中,GridView在PopWindow中OnItemClick不响应,但是有按压效果.需要PopWindow的Show时加入这行代码: popupWindow.setFocusabl ...