RJS & Unicode (again)


#1

I have a problem with unicode & RJS. I searched several boards & blogs,
but was not able to find a solution. Let me explain my problem with an
example.

View (test.rhtml):

äüö������
...

Output:
äüö������

RJS-Template (an_action.rjs):
page.replace_html ‘a_test_div’, ‘äüöÃ?Ã?Ã?Ã?Ã?Ã?’

Calling ‘an_action’ changes the content of ‘a_test_div’, the output
should remain the same, but Instead of ‘äüöÃ?Ã?Ã?Ã?Ã?Ã?’ i get
‘Ã?¤Ã?¼Ã?¶Ã?Â?Ã?Â?Ã?Â?Ã?Â?Ã?Â?Ã?Â?’ which seems to be an encoding problem.

I’ve found a workaround for strings (introduced by Thomas F.) by
using
page.replace_html ‘messageEditor’, ‘äüöÃ?Ã?Ã?Ã?Ã?Ã?’.gsub(/([^\x00-\x9f])/u)
{ |s| “&#x%x;” % $1.unpack(‘U’)[0] }
instead of
page.replace_html ‘a_test_div’, ‘äüöÃ?Ã?Ã?Ã?Ã?Ã?’
but this strategy of course fails while rendering partials.

Are there any better suggestions?

Thanks
Dave


#2

I’m having the same problem too.


#3

Sorry, I forgot:

A permanent solution can be reached by changing ‘render’ method in
‘add_rjs_to_javascript_helper.rb’ to:

def render(*options_for_render)
(Hash === options_for_render.first ?
@context.render(*options_for_render) :
options_for_render.first.to_s).
gsub(/([^\x00-\x9f])/u) { |s| “&#x%x;” % $1.unpack(‘U’)[0] }
end

but I’m still not shure, if it is really a good one.

Better suggestions are always welcome.