将Unicode转换为UTF8

时间:2011-04-13 22:06:31

标签: javascript unicode utf-8

我正在尝试在javascript中混合两个不同的第三方服务,并且我在某个字符集中获取字符串,我需要在Javascript中转换为不同的字符集。

例如,字符串是tést。

我得到一个像这样的编码字符串:te%u0301st。重音编码为%u0301。我需要以某种方式将其转换为此字符串:t%C3%A9st其中é编码为%C3%A9。如何在javascript中将e%u0301转换为%C3%A9?

由于

2 个答案:

答案 0 :(得分:2)

您似乎正在尝试规范化您的输入,可能是在Unicode Normal Form C中。我不知道在Javascript中执行此操作的任何简单方法;您可能需要自己实施normalization algorithm,或者找一个这样做的库。

已修改以删除对错误问题的回答

答案 1 :(得分:0)

如果你需要的只是任何网址转义的Unicode编码,这就可以解决问题:

function convert(s) {
  function parse(a, c) {
    return String.fromCharCode(parseInt(c, 16));
  }
  return encodeURIComponent(s.replace(/%u([0-f]{4})/gi, parse));
}

convert('te%u0301st'); // => te%CC%81st

如果您特别需要Normal Form C,则需要自己实现大量的Unicode智能,因为'te\u0301st'.length(或'tést'.length)在javascript中为5。