0

我有一个 xml 文件,其中包含 En Dash 和 Em Dash 字符作为元素文本的一部分。它们正在转换为 UTF-8 代码,如下所示。

<TextValue>This is an En Dash:  \xE2\x80\x93    This is an Em Dash: \xE2\x80\x94.</TextValue>

我想使用 JavaScript 处理那些 UTF-8 十六进制代码,并用我想要的任何自由文本替换它们。

任何人都可以建议这样做的方法吗?我尝试使用 RegEx,但无法解析这些代码。不过,我可以使用 RegEx 处理任何其他文本。

谢谢你。

4

2 回答 2

1

演示

var text = "<TextValue>This is an En Dash:  \xE2\x80\x93    This is an Em Dash: \xE2\x80\x94.</TextValue>"

var fromArr = ["\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\xa6"],
    toArr = ["'", "'", '"', '"', '-', '--', '...'];

    for (var i=0;i<fromArr.length;i++) {
        text = text.replace(fromArr[i],toArr[i],"g")
    }
        alert(text)

改成

 var fromArr = ["\xe2\x80\x93", "\xe2\x80\x94"], toArr = [ '-', '--'];

如果您不需要智能引号省略号

结果:

在此处输入图像描述

于 2012-08-17T05:21:44.283 回答
0

我终于通过阅读 UTF-8 中的消息正文并使用以下几行替换 unicodes 而逃脱了。

body = body.replace(/\u00E1/g,"a");  //LATIN SMALL LETTER A WITH ACUTE
body = body.replace(/\u00E2/g,"a");  //LATIN SMALL LETTER A WITH CIRCUMFLEX
body = body.replace(/\u00E3/g,"a");  //LATIN SMALL LETTER A WITH TILDE
body = body.replace(/\u201D/g,"\"");  //RIGHT DOUBLE QUOTATION MARK
body = body.replace(/\u201C/g,"\"");  //LEFT DOUBLE QUOTATION MARK
body = body.replace(/\u2424/g," ");  //NEW LINE \n
body = body.replace(/\u000D/g," ");  //CARRIAGE RETURN \r
于 2012-08-23T20:53:22.313 回答