在刮擦时摆脱Â等特殊字符

时间:2017-06-09 19:48:33

标签: javascript excel encoding web-scraping

我一直在试图用Confluence从Confluence中删除一些表并制作CSV。当我在Excel上打开CSV时,很多数据都有特殊字符,有些字段看起来像这样:

  Rüdiger Fritsches

我想摆脱特殊角色。我一直在寻找的很多其他堆栈溢出答案表明这是一个字符编码问题,但是当我尝试使用以下代码清理文本时:

function getFixedString(string) {
  try {
     return decodeURIComponent(escape(string));
  }
  catch(e) {
    return string;
  }
}

它不起作用。有没有其他方法来解决这个问题?我已经成功地通过首先在记事本中打开来获得一个干净的文件,保存为txt,然后在Excel中重新打开,但这不是我可以提供给客户的解决方案。

虽然这不是我的程序运行方式,但您可以通过运行此程序并在Excel中打开csv来重现错误:

str = "@nbayly when done manually the outcome is Rüdiger Fritsches,The original website's charset is UTF-8.";
str = getFixedString(str);
var a = window.document.createElement('a');
a.href = window.URL.createObjectURL(new Blob([str], {type: 'text/csv;charset=utf-8'}));
a.download = 'test.csv';

 // Append anchor to body.
document.body.appendChild(a)
a.click();

// Remove anchor from body
document.body.removeChild(a)

function getFixedString(string) {
  try {
    return decodeURIComponent(escape(string));
  }
  catch(e) {
    return string;
  }
}

1 个答案:

答案 0 :(得分:2)

如果您要删除所有非ascii字符。您可以执行以下操作:

function getFixedString(string){
     return string.replace(/[^\x00-\x7F]/g, "");
}