5
votes

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.

3
Yes, 8859-2, it's character table for my Polish language - Tomasz Smykowski
... What for? Both JavaScript and most browsers, can handle UTF-8 just fine. - Ignacio Vazquez-Abrams
Are you wanting to change the encoding for the strings that JavaScript is using itself, or the encoding for the whole web page? - Mike DeSimone
I've updated question to explain 'what for' part. - Tomasz Smykowski
@Mike DeSimone Only text. I consider that it is not possible to change encoding of a div that i create from my script - Tomasz Smykowski

3 Answers

2
votes

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

0
votes

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.

0
votes

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