操纵JavaScript-Unicode
在下面的JavaScript代码中,第一个打印正确的符号(希腊伽马),而第二个打印字符串“\u03b8”操纵JavaScript-Unicode,javascript,unicode,Javascript,Unicode,在下面的JavaScript代码中,第一个打印正确的符号(希腊伽马),而第二个打印字符串“\u03b8” var full_uni='\u03b8'; var part_uni='\\' + 'u03b8'; console.log(full_uni); console.log(part_uni); 我的问题是 为什么? 如何将full\u uni打印为'\u03b8'(或类似)和/或将part\u uni打印为正确的符号 虽然它们之间没有内置的来回方式,但您可以使用函数来实现 functio
var full_uni='\u03b8';
var part_uni='\\' + 'u03b8';
console.log(full_uni);
console.log(part_uni);
我的问题是
full\u uni
打印为'\u03b8'(或类似)和/或将part\u uni
打印为正确的符号虽然它们之间没有内置的来回方式,但您可以使用函数来实现
function decodeUnicodeSequence(str) {
return str.replace(/\\u([0-9a-f]{4})/ig,function(_,hex) {
return String.fromCharCode(parseInt(hex,16));
});
}
function encodeUnicodeSequence(str) {
return str.replace(/[\u00a0-\uffff]/g,function(chr) {
return "\\u"+("00"+chr.charCodeAt(0).toString(16)).slice(-4);
});
}
var part_uni='\u03'+'b8'代码>它将生成error@GovindSinghNagarkoti-是的!我修改了它,这样它就可以工作了。这就是你的答案,两者都是不同的。注意,你在第二个答案中是怎么做到的?毫不奇怪,\\u03b8
将作为\u03b8
输出@NiettheDarkAbsol-我不得不加上第二个反斜杠,否则第一个反斜杠会逃过最后的单引号,它会痛苦地抱怨。也许我对这个问题措词不当。也许我应该问“我如何通过编程生成unicode字符,以及如何将unicode转换回十六进制以供进一步操作?”我有点期待一个“无法完成”的答案。奇怪的是,语言没有一种在两者之间转换的本地方式。不过,谢谢你提供的替代代码。@Garethred我以前从未见过有任何需要在两者之间进行转换。我知道语言有时有一些模糊的功能,但像这样的东西是如此。。。大多数情况下,这是不必要的。此外,如果母语拥有一切,我们需要什么能力来定义我们自己的函数呢?;)有关在两者之间转换的联机工具,请参见。它用于生成尽可能紧凑的转义输出。