Javascript,将unicode字符串转换为Javascript转义?

我有一个变量,包含一个由日语字符组成的字符串,例如;

“みどりいろ”

我如何将其转换为其Javascript转义表单?

我这个例子的结果具体是:

“\ u306f \ u3044 \ u3044 \ u308d”

如果有变化,我更喜欢jquery方法。

 "み".charCodeAt(0).toString(16); 

这将为您提供unicode(hex)。 你可以通过循环运行它:

 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" 

演示: http : //jsfiddle.net/DerekL/X7MCy/

更多信息: .charCodeAt

只是

 escape("みどりいろ") 

应该满足大多数情况下的需求,如果你需要它以“\ u”而不是“%xx”/“%uxxxx”的forms,那么你可能想要使用正则表达式:

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是可选的,使它看起来与第一篇文章完全一样)

它不会逃避在大多数情况下不需要的字符,这对你来说可能是一个加分; 如果没有 – 请参阅Derek的回答,或使用我的版本:

 '\\u' + "みどりいろ".split('').map(function(t) { return ('000' + t.charCodeAt(0).toString(16)).substr(-4) }).join('\\u'); 

以上答案是合理的。 轻微的空间和性能优化:

 function escapeUnicode(str) { return str.replace(/[^\0-~]/g, function(ch) { return "\\u" + ("000" + ch.charCodeAt().toString(16)).slice(-4); }); }