如何编码“ \ u00c3 \ u00a7”之类的unicode序列?

时间:2019-05-14 15:00:15

标签: javascript unicode

我有一个字符串,女巫包含诸如“ \ u00c3 \ u00a7”之类的unicode序列,女巫应显示为“ç”,但我却得到了这个“ç”

数据来自Json中Facebook的导出。

有一个与此主题相关的帖子(Facebook JSON badly encoded),我尝试使用iconv进行编码/解码,但没有成功!

谢谢!

从latin1到utf8进行编码/解码:

iconv.decode(iconv.encode(str, 'latin1'), 'utf8');

替换\ u ...:

 str.replace(/\\u([\d\w]{4})/gi, function (match, grp) {
     return String.fromCharCode(parseInt(grp, 16));
 });

我还尝试了encodeURIComponent:

 encodeURIComponent(stringWithUnicode);

1 个答案:

答案 0 :(得分:0)

我对此一无所知,但是我确实注意到两个字节的按位OR(|)会产生正确的字符,如果将unicode字符串发送到以下函数中,则会得到正确的结果:

function getExtended(uc){
    var bytes = uc.split("\\u").filter(v => v.length).map(v => parseInt(v, 16));
    return String.fromCharCode(bytes[0] | bytes[1]);
}