Javascript, convert unicode string to Javascript escape?
"み".charCodeAt(0).toString(16);
This will give you the unicode (in Hex). You can run it through a loop:
String.prototype.toUnicode = function(){ var result = ""; for(var i = 0; i < this.length; i++){ // Assumption: all characters are < 0xffff result += "\\u" + ("000" + this[i].charCodeAt(0).toString(16)).substr(-4); } return result;};"みどりいろ".toUnicode(); //"\u307f\u3069\u308a\u3044\u308d""Mi Do Ri I Ro".toUnicode(); //"\u004d\u0069\u0020\u0044\u006f\u0020\u0052\u0069\u0020\u0049\u0020\u0052\u006f""Green".toUniCode(); //"\u0047\u0072\u0065\u0065\u006e"
Demo: http://jsfiddle.net/DerekL/X7MCy/
More on: .charCodeAt
Above answer is reasonable. A slight space and performance optimization:
function escapeUnicode(str) { return str.replace(/[^\0-~]/g, function(ch) { return "\\u" + ("000" + ch.charCodeAt().toString(16)).slice(-4); });}
just
escape("みどりいろ")
should meet the needs for most cases, buf if you need it in the form of "\u" instead of "%xx" / "%uxxxx" then you might want to use regular expressions:
escape("みどりいろ").replace(/%/g, '\\').toLowerCase()
escape("みどりいろ").replace(/%u([A-F0-9]{4})|%([A-F0-9]{2})/g, function(_, u, x) { return "\\u" + (u || '00' + x).toLowerCase() });
(toLowerCase
is optional to make it look exactly like in the first post)
It doesn't escape characters it doesn't need to in most cases which may be a plus for you; if not - see Derek's answer, or use my version:
'\\u' + "みどりいろ".split('').map(function(t) { return ('000' + t.charCodeAt(0).toString(16)).substr(-4) }).join('\\u');