Incompatible character encodings - Rails patch 08. April 2010 um 14:50 Uhr / Programming
For quite some time I had a problem with Rails under Ruby 1.9.1. Sometimes it just throwed this error and I didn't know what to do:
incompatible character encodings: UTF-8 and ASCII-8BIT
But I think now I found a solution, at least for my case. It was always the content around the TextHelper method markdown
. After some trying I found out that if I call markdown(text).force_encoding("utf-8")
the problem would go away.
So that was great, but I use markdown
all over the place. I also didn't want to patch the Rails code directly, so I tried to write my first "Monkey Path" for Rails.
And here it is, it's unobtrusive, not aware of anything and will work in the future too, even if they change the argument list or behaviour of the markdown
method. And it doesn't break anything in 1.8.x either.
# config/initializers/monkeypatch_markdown.rb
module ActionView
module Helpers
module TextHelper
def markdown_with_encoding_utf8(*args)
result = markdown_without_encoding_utf8(*args)
result.encoding("utf-8") if result.respond_to?(:encoding)
end
alias_method_chain :markdown, :encoding_utf8
end
end
end
Kommentare
Die Kommentare sind für diesen Eintrag geschlossen.
fox aus Deutschland schrieb am 17.07.2010
Ich wusste nicht, wie es zu lösen, bis ich diesen Beitrag zu lesen.
Danke
Daniel aus Zürich schrieb am 26.12.2011
Interessante Denkaufgabe, ich bereite mich grad auf meine Programmierprüfung vor, da hilft es sich auch solche Sachen noch einmal anzuschauen.