我有一個變量,包含一個由日文字符組成的字符串,例如;Javascript,將unicode字符串轉換爲Javascript轉義?
「みどりいろ」
我怎麼會去這個轉換爲它的JavaScript逃逸的形式?
我以後在這個例子中明確的結果是:
「\ u306f \ u3044 \ u3044 \ u308d」
我寧願一個jQuery的方法,如果有一個變化。
我有一個變量,包含一個由日文字符組成的字符串,例如;Javascript,將unicode字符串轉換爲Javascript轉義?
「みどりいろ」
我怎麼會去這個轉換爲它的JavaScript逃逸的形式?
我以後在這個例子中明確的結果是:
「\ u306f \ u3044 \ u3044 \ u308d」
我寧願一個jQuery的方法,如果有一個變化。
"み".charCodeAt(0).toString(16);
這會給你unicode(十六進制)。
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
我的壞:)出於某種原因,我錯過了'.toString(16)'部分 –
@EladStern - 沒關係。 –
你可以用'('0000'+ partial).substr(-4);'替換'while(partial.length!== 4)partial =「0」+ partial;' – Adassko
只是
escape("みどりいろ")
應滿足大多數情況下的需求,BUF,如果您需要它以「\ u」而不是「%xx」/「%uxxxx」的形式顯示,那麼您可能需要使用正則表達式:
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" + ("0000" + ch.charCodeAt().toString(16)).slice(-4);
});
}
逃生( 「みどりいろ」) –
@SergeiZahharenko - '逃生( 「ABC」)// 「ABC」'... –