如何将日本国旗字符放入字符串中?

Dog*_*Dog 1 javascript unicode emoji

我们正在尝试使用 unicode 转义(以避免在源代码中包含 unicode)来制作一个国家/地区标志列表。我们使用字符来表示标志,以允许用户在纯文本内容中复制/粘贴标志,并避免传输图像文件和死链接的带宽。

如果我记得,在 Java 中,处理特殊字符时必须使用特殊的 unicode 转义序列。所以我认为在 JS 中也是如此。我查找了 Japan flag 的代码,并找到了这个序列:1f1ef 1f1f5(如本文档中所见,该文档从其他一些字符集转换为 unicode 序列)。所以我认为写字符串的方法是"\u1f1ef\u1f1f5",但返回"?f?5". 我错过了什么?

Mar*_*kus 5

我知道这是一个老问题。不过,以下实现可能对未来的读者有用。解决方案在 ECMAScript 2015 中运行。

// Create flag from country code
function getCountryFlag(cc) {
  // Mild sanity check.
  if (cc.length !== 2)
    return cc;

  // Convert char to Regional Indicator Symbol Letter
  function risl(chr) {
    return String.fromCodePoint(0x1F1E6 - 65 + chr.toUpperCase().charCodeAt(0));
  }

  // Create RISL sequence from country code.
  return risl(cc[0]) + risl(cc[1]);
}

// Test
document.write(getCountryFlag('jp'));
Run Code Online (Sandbox Code Playgroud)