前些日子經若亮童鞋提醒,我在其餘推薦的頁面中增長了對 Dropbox 和 Linode 等工具的推薦,一來分享這些好用的產品,二來指望剛接觸這些工具的好心的朋友能夠不吝嗇時間用個人推薦碼註冊,讓我得到一些分享的回報。css
改過頁面內容後,照常的使用rake preview
命令生成預覽頁面,打開瀏覽器,獲得的倒是一行孤零零的node
Sorry, I can not find /git
rake generate
後的結果更悲慘:github
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
,可是我只是修改了普普統統的幾行文字而已,怎麼會有編碼問題呢。chrome
恰逢本身剛由於 SSD 損壞重裝了系統,編程環境也是剛剛配好,並且使用 rvm 安裝 ruby1.9.3 的時候,提示文字中也有一些 warning。我開始懷疑是否是 ruby1.9.3 沒編譯好的緣由。編程
設立對照實驗,我在另一臺 Ubuntu 機器上 clone 下一個博客的 repo,rake generate
,結果居然一切順利。一切彷佛都在說明就是開發環境的問題。vim
我刪除了以前的 ruby1.9.3,甚至是 rvm,重裝後結果依舊。瀏覽器
不能在一棵樹上吊死,我不科學的將目標從新定位到 markdown 頁面中的編碼錯誤上(沒想到後來事實證實奏效了……)。sass
在 git 中新開啓測試分支,在上面作回滾,測試修改頁面內容前源碼可否 generateruby
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 上的截圖。
誰能告訴我理解這一現象的思路呢 ><…