我只是不明白,但这是我的情况。
我有这样的代码:
someFunction: function(content){
content = content.substr(19005,24);
console.log('content is: '+content);
content = decodeURIComponent(content);
console.log(typeof content, content);
var string = 'u0430u0437u0443u0439';
string = decodeURIComponent(string);
console.log(typeof string, string);
}
当我在node.js服务器上运行它时,它会返回"异常"结果:
content is: u0430u0437u0443u0439
string u0430u0437u0443u0439 // but should be "string азуй" as below
string азуй
那么,这怎么可能呢??
1) 相同内容
2) 相同的可变类型
3) 相同的(decodeURIComponent)功能
- 但结果不同
附言:我看到的唯一区别是content
和string
变量的起源。但这是在起作用吗?
您创建的第二个字符串不是一个包含反斜杠的字符串,而是一个unicode字符字符串。在javascript中创建字符串时,可以使用反斜杠进行转义,并提供unicode字符编号。这允许使用普通可键入键之外的特殊字符。(虽然不完全准确,但你已经明白了)。
为了让它发挥作用,你需要这样做:
var string = '\u0430\u0437\u0443\u0439';
这种双转义意味着您实际上有反斜杠而不是转义序列。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#String_literals了解更多详细信息。
编辑:听起来你在问如何从第一个字符串到实际的unicode字符。使用这个(答案取自How do I decode a string with escaped unicode?):
var content = content.substr(19005,24);
var r = /\u([dw]{4})/gi;
content = content.replace(r, function (match, grp) {
return String.fromCharCode(parseInt(grp, 16)); } );
content = unescape(content);