我正在尝试在javascript中混合两个不同的第三方服务,并且我在某个字符集中获取字符串,我需要在Javascript中转换为不同的字符集。
例如,字符串是tést。
我得到一个像这样的编码字符串:te%u0301st。重音编码为%u0301。我需要以某种方式将其转换为此字符串:t%C3%A9st其中é编码为%C3%A9。如何在javascript中将e%u0301转换为%C3%A9?
由于
答案 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。