我有一个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>
此时,我完全没有想法。
答案 0 :(得分:0)
您是否尝试过设置LC_CTYPE
env var?试试LC_CTYPE=en_US.UTF-8
。
答案 1 :(得分:0)
我有类似的问题。我最初的设置和部署到GitHub工作正常。当我刚编辑_config.yml
并插入一些土耳其字符如ş
时,我收到了类似的错误。添加LANG
和LC_ALL
等系统变量无济于事。
然后我用notepad ++打开文件,将编码更改为UTF-8而没有BOM,问题解决了。这也适用于帖子文件(.markdown
文件夹中包含source/_posts
个扩展名的文件)
因此,在插入任何非ascii字符之前,只需更改文件的编码UTF-8而不使用BOM。不需要环境变量。