Странность Юникода с осьминогом, крамдауном и Героку
У меня есть блог Octopress, который я размещаю на Heroku, используя специальный сборочный пакет jgarber. У меня все работало довольно хорошо, пока я застрял с 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 ответа
Вы пытались установить LC_CTYPE
env var too? Пытаться LC_CTYPE=en_US.UTF-8
,
У меня была похожая проблема. Моя первоначальная настройка и развертывание на GitHub работали нормально. Когда я только что отредактировал _config.yml
и вставьте некоторые турецкие символы, такие как ş
Я получил похожую ошибку. Добавление системных переменных, таких как LANG
а также LC_ALL
не помогло.
Затем я просто открыл файл с помощью notepad++, изменил кодировку на UTF-8 без спецификации и проблема была решена. Это также работает для почтовых файлов (те, с .markdown
расширения в source/_posts
папка)
Так что просто измените кодировку файла UTF-8 без спецификации, прежде чем вставлять любые символы, не являющиеся ascii. Нет необходимости в переменных окружения.