与octopress,kramdown和Heroku的Unicode怪异

时间:2013-04-28 14:58:34

标签: heroku unicode octopress kramdown

我有一个Octopress博客,我使用jgarber's custom buildpack在Heroku上托管。只要我坚持rdiscount,我的工作就相当顺利,但我最近决定切换到kramdown以获得MultiMarkdown支持。事情变得奇怪了。

这在我的本地方框(OS X)上工作正常,但当我推送到Heroku时,我收到以下错误:

Liquid Exception: incompatible character encodings: UTF-8 and ASCII-8BIT in atom.xml

据我所知,我一直都是UTF-8,但我很乐意承认Ruby不是我正常的堆栈,所以也许我只是遗漏了一些东西。我在kramdown v0.14.2。当我使用foreman run rake clean generate时,一切正常,bundle exec rake clean generate也是如此。但是,当我推送到Heroku(或运行heroku run rake clean generate)时,我得到上面的错误。

我认为这个问题可能与默认编码有关,所以我进行了以下实验:

$ irb
1.9.3-p327 :001 > ENV["LANG"]
=> "en_US.UTF-8"
1.9.3-p327 :002 > Encoding.default_external
=> #<Encoding:UTF-8>

$ heroku run irb
Running `irb` attached to terminal... up, run.6846
irb(main):001:0> ENV["LANG"]
=> "en_US.UTF-8"
irb(main):002:0> Encoding.default_external
=> #<Encoding:UTF-8>

此时,我完全没有想法。

2 个答案:

答案 0 :(得分:0)

您是否尝试过设置LC_CTYPE env var?试试LC_CTYPE=en_US.UTF-8

答案 1 :(得分:0)

我有类似的问题。我最初的设置和部署到GitHub工作正常。当我刚编辑_config.yml并插入一些土耳其字符如ş时,我收到了类似的错误。添加LANGLC_ALL等系统变量无济于事。

然后我用notepad ++打开文件,将编码更改为UTF-8而没有BOM,问题解决了。这也适用于帖子文件(.markdown文件夹中包含source/_posts个扩展名的文件)

因此,在插入任何非ascii字符之前,只需更改文件的编码UTF-8而不使用BOM。不需要环境变量。