【问题标题】:Convert Oct to text from String in javascript在javascript中将Oct转换为字符串中的文本
【发布时间】:2020-06-27 09:20:59
【问题描述】:

我尝试将字符串中的 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

【问题讨论】:

  • 如果你有一个“八进制值”,为什么要使用基数 16?另外,为什么361 o 部分所需的输出没有anything?为什么要在字符串文字中使用反斜杠转义 3?它不会有任何影响。它与Hello 361o 是相同的字符串。如果您的字符串中需要文字反斜杠,您应该转义反斜杠。 r3 是干什么用的?你永远不会使用它......并且r 期望在你的字符串中有一个u,它不存在。这里有很多问题......
  • 对不起,我添加了错误的输出,现在输出就像现在看到的那样

标签: javascript utf-8


【解决方案1】:

几个问题:

  • 您有一个“八进制值”,但在parseInt 中仅使用基数 16。您需要使用以 8 为基数来解析八进制数。

  • 您的输入字符串中没有反斜杠。 "\3""3" 完全相同,因为您实际上是在转义“3”(这不是必需的)。如果您想要文字反斜杠,则需要转义反斜杠:"\\"

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

其他说明:

  • 当输入参数为空时,您返回一个字符串,但在其他情况下,您的函数不返回任何内容。它只是输出它。你应该返回字符串。

  • 如果参数是undefined,那么== null 也将是true,因此if 条件中不需要|| 表达式。

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

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

function decodeUnicodeChar(str) {
  if (str == null) return ""; // no need extra test on undefined
  var r = /\\u([\d\w]{4})/gi;
  var r3 = /\\([\d\w]{3})/gi;
  str = str.replace(r, (match, grp) => String.fromCharCode(parseInt(grp, 16)))
           .replace(r3, (match, grp) => String.fromCharCode(parseInt(grp, 8)))
           .replace(/\n/g, "<br>");
  return decodeURIComponent(str); // return it
}

console.log(decodeUnicodeChar("Hello \\361o")); // escape backslash

最后,我建议使用 JSON 格式的字符串,它允许对 unicode 字符进行编码。然后你只需要打电话给JSON.parse

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多