views:

934

answers:

3

I would like to change string encoding from UTF-8 to ISO-8859-2 in Javascript. How can I do it?

I need it because I've designed a widget. User just copies < script > tag from my site and puts it on his. This script creates div and puts into div widget contents with text.

If target website is in UTF-8 encoding - it works fine. But when it is in ISO-8859-2 than text that is encoded in UTF-8 is displayed on site with ISO-8859-2 and as a result I see trash.

+1  A: 

Instead of using e.g. "ĉ" in your JavaScript code, use Unicode escapes such as "\u0109".

Ignacio Vazquez-Abrams
and how to convert all diacritic characters from regular for to \u notation?
tomaszs
In Python you can use `print u'text goes here'.encode('unicode-escape')`. Not sure about other languages though.
Ignacio Vazquez-Abrams
A: 

If you're in control of the output, you can replace all special characters with unicode escapes (e.g. \u00e4 for ä). The browser can interpret it correctly regardless of document encoding.

The easiest way to do this would be to put the string into a JSON encoder. Both PHP's and Ruby's does that. Don't know about other implementations though.

Another solution that might work is to add charset="utf-8" to the <script> tag.

jou
A: 

I suppose you just need to convert your wdiget from UTF-8 to ISO-8859-2 and provide 2 versions of script.