I'm in trouble with encoding again.
I have a text area. Where I can enter sentences. And when a sentence
that contains multiple lines is typed I get this into the DB:
(json serialized)
--- "{\"text\":[\"line one\\r\\nline two\"]}"
Ok. When I take it from the db I see it like this in the controller:
{"line one\r\nline two"=>"text"}
(I have done something in between to change the order but that's
irrelevant)
But you can see the \r\n in it.
The thing is that in the view I need to pass it via javascript to a
function that re-creates the text area dynamically.
But the function gives the error: "Uncaught SyntaxError: Unexpected
token ILLEGAL"
For the javascript function I can use <%= CGI::escape(@thestring) %> and
then the text area is created and the line breaks respected. That would
be a way out.
BUT. If any of the letters contain an accent, like í, then CGI::escape
displays the letters with accents incorrectly. Instead of í I get Ã...
I cannot find a way to live with both, accents and line breaks.
I'm in trouble with encoding again.
I have a text area. Where I can enter sentences. And when a sentence
that contains multiple lines is typed I get this into the DB:
(json serialized)
--- "{\"text\":[\"line one\\r\\nline two\"]}"
Ok. When I take it from the db I see it like this in the controller:
{"line one\r\nline two"=>"text"}
(I have done something in between to change the order but that's
irrelevant)
But you can see the \r\n in it.
The thing is that in the view I need to pass it via javascript to a
function that re-creates the text area dynamically.
But the function gives the error: "Uncaught SyntaxError: Unexpected
token ILLEGAL"
From this week's JavaScript Weekly newsletter:
JSON: The JavaScript subset that isn't?
Magnus Holm notes that while JSON is meant to also be syntactically legal JavaScript code.. it isn't always. What has Magnus discovered? Find out here.
For the javascript function I can use <%= CGI::escape(@thestring) %> and
then the text area is created and the line breaks respected. That would
be a way out.
BUT. If any of the letters contain an accent, like í, then CGI::escape
displays the letters with accents incorrectly. Instead of í I get à ...
I cannot find a way to live with both, accents and line breaks.
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
JSON: The JavaScript subset that isn't?
Magnus Holm notes that while JSON is meant to also be syntactically
legal JavaScript code.. it isn't always. What has Magnus discovered?
Find out here.
Hi, thanks. Just don't see how to use the solution.
I have used the patched rack middleware proposed but the problem
remains.
I guess it looks for U+2028 or U+2029 but I guess they are not present
in my case...
Thanks. That is true, I have to check that.
I found something interesting with the db configuration files. But I'll
make a new thread not to mix this one.
I'm in trouble with encoding again.
I have a text area. Where I can enter sentences. And when a sentence
that contains multiple lines is typed I get this into the DB:
(json serialized)
--- "{\"text\":[\"line one\\r\\nline two\"]}"
Ok. When I take it from the db I see it like this in the controller:
{"line one\r\nline two"=>"text"}
(I have done something in between to change the order but that's
irrelevant)
But you can see the \r\n in it.
The thing is that in the view I need to pass it via javascript to a
function that re-creates the text area dynamically.
But the function gives the error: "Uncaught SyntaxError: Unexpected
token ILLEGAL"
Well now I think I fixed this. Nothing to do with json. More with common
sense. Mine.
Then @value can be used in the view and the line breaks stay in place.
No JS error and no need to do any CGI::escape to keep them anymore. And
no problems with accents since I don't use CGI::escape anymore.