操纵JavaScript-Unicode

操纵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

在下面的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
    打印为正确的符号

  • 虽然它们之间没有内置的来回方式,但您可以使用函数来实现

    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我以前从未见过有任何需要在两者之间进行转换。我知道语言有时有一些模糊的功能,但像这样的东西是如此。。。大多数情况下,这是不必要的。此外,如果母语拥有一切,我们需要什么能力来定义我们自己的函数呢?;)有关在两者之间转换的联机工具,请参见。它用于生成尽可能紧凑的转义输出。