0

我有一个使用jgarber 的自定义 buildpack在 Heroku 上托管的Octopress博客。只要我坚持使用 ,我的工作就相当好,但我最近决定切换到MultiMarkdown支持。就在那时,事情变得很奇怪。rdiscountkramdown

这在我的本地机器(OS X)上运行良好,但是当我推送到 Heroku 时,我收到以下错误:

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

据我所知,我一直是 UTF-8,但我很容易承认 Ruby 不是我的正常堆栈,所以也许我只是遗漏了一些东西。我在kramdownv0.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>

在这一点上,我完全没有想法。

4

2 回答 2

0

您是否也尝试过设置环境LC_CTYPE变量?试试LC_CTYPE=en_US.UTF-8

于 2013-07-22T06:31:43.073 回答
0

我有一个类似的问题。我的初始设置和部署到 GitHub 运行良好。当我刚刚编辑_config.yml并插入一些土耳其语字符ş时,我遇到了类似的错误。添加系统变量喜欢LANGLC_ALL没有帮助。

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

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

于 2014-08-10T12:35:57.590 回答