在javascript中将Oct从字符串转换为文本

在javascript中将Oct从字符串转换为文本,javascript,utf-8,Javascript,Utf 8,我尝试将oct值从字符串转换为char,我执行了这个逻辑,但它没有返回我想要的正确值 decodeUnicodeChar(obj1) { if (obj1 == null || obj1 == undefined) return ""; var r = /\\u([\d\w]{4})/gi; var r3 = /\\([\d\w]{3})/gi; obj1 = obj1.replace(r, functi

我尝试将oct值从字符串转换为char,我执行了这个逻辑,但它没有返回我想要的正确值

    decodeUnicodeChar(obj1) {
      if (obj1 == null || obj1 == undefined)
        return "";
      var r = /\\u([\d\w]{4})/gi;
      var r3 = /\\([\d\w]{3})/gi;
      obj1 = obj1.replace(r, function (match, grp) {
        return String.fromCharCode(parseInt(grp, 16));
      }).replace(/\n/g, "<br>");
      obj1 = unescape(obj1) ? unescape(obj1) : decodeURIComponent(obj1);
    console.log(obj1);
     document.write(obj1);
  }
  
  decodeUnicodeChar("Hello \361o")
电流输出:- 你好\361o

所需输出:-Helloño

几个问题:

您有一个oct值,但在parseInt中仅使用base 16。您需要使用基数8来解析八进制数

输入字符串中没有反斜杠\3与3完全相同,因为你实际上是在逃避3,这是不必要的。如果需要文字反斜杠,则需要转义反斜杠:\\

虽然您创建了正则表达式以匹配输入中的八进制数(如r3),但您从未使用该正则表达式

其他备注:

当输入参数为null时,返回字符串,但在另一种情况下,函数不返回任何内容。它只是输出它。您应该返回字符串

如果参数未定义,那么==null也将为真,因此在If条件中不需要| |表达式

不要使用document.write。分配给DOM元素的innerHTML属性几乎总是更好的

不要将变量命名为obj1,因为实际上它应该具有字符串数据类型

函数decharstr{ if str==null返回;//不需要对未定义的 var r=/\\u[\d\w]{4}/gi; 变量r3=/\\[\d\w]{3}/gi; str=str.replacer,match,grp=>String.fromCharCodeparseIntgrp,16 .replacer3,匹配,grp=>String.fromCharCodeparseIntgrp,8 .替换/\n/g; return decodeURIComponentstr;//返回它 }
console.logdecodeUnicodeCharHello\\361o;//转义反斜杠如果有oct值,为什么使用基数16??此外,为什么需要的输出没有361 o部件的任何内容?为什么在字符串文本中用反斜杠转义3?这不会有任何效果。它是与Hello 361o相同的字符串。如果字符串中需要文字反斜杠,则应转义反斜杠。r3是干什么用的?你从不使用它。。。r期望字符串中有一个u,但它不在那里。这里有这么多问题…很抱歉,我添加了错误的输出,现在输出就像现在看到的一样