javascript - 将 html 表导出到 Excel javascript 函数特殊字符已更改

标签 javascript excel encoding export special-characters

我有以下将 html 导出到 excel 的函数:

function generateexcel(tableid) {
  var table= document.getElementById(tableid);
  var html = table.outerHTML;
  window.open('data:application/vnd.ms-excel,' + encodeURIComponent(html));
}

一个问题是数据中的特殊字符被转换为其他符号:

  • 1º = 1º
  • é = É

你会如何解决这个问题?是否有任何字符替换 html 以防止它?任何编码选项?

最佳答案

替换字符是一个糟糕的解决方案。

我将 encodeURIComponent 替换为转义并且工作正常,但自 ECMAScript v3 以来不推荐使用转义。

出现此问题是因为 encodeURIComponent 适用于 UTF-8 而 Excel 不适用。

对我来说更好。

将数据编码为 base64 并像这样导出。我使用了来自 https://github.com/carlo/jquery-base64/blob/master/jquery.base64.min.js 的 jquery-base64 插件

并将代码更改为:

window.open('data:application/vnd.ms-excel;base64,' + $.base64.encode(html));

如果不想用jquery,可以用这个base64_encode函数 http://phpjs.org/functions/base64_encode

“Base64 编码/解码已经是现代 (tm) 浏览器的原生功能:btoa(str) 和 atob(str) 是无需任何外部重新实现即可使用的功能。” - chipairon

关于javascript - 将 html 表导出到 Excel javascript 函数特殊字符已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11084564/

相关文章:

ios - 无法在 UIDocumentInteractionController/UIWebView 中显示 .xlsx 甲酸盐

excel - 如何在数字前后添加 '

Java-如何在文件中写入位而不是字符

php - PHP编码问题(UTF-8)

javascript - 多模态弹出窗口 vue.js

javascript - 控制台中对象的输出失败

R - 对于 view_html() 我如何将限制更改为超过 100

php - 检测 PHP 中字符串的字符集(UTF-8 或 Windows-1256)

javascript - 为什么 jQuery 中的 "this"参数返回带有 anchor 的 href

javascript - AngularJS http 请求永远不会执行