我有一个xml文件,其中包含En -破折号和Em -破折号字符作为元素文本的一部分。它们将被转换为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处理任何其他文本。
谢谢。
发布于 2012-08-17 13:21:44
DEMO
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-24 04:53:22
最后,我阅读了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 \rhttps://stackoverflow.com/questions/12000040
复制相似问题