4

我有一个单页应用程序,它在头部指定带有“元”标签的 UTF-8 字符集:

<head>
  <meta charset="utf-8">
  ...
</head>
...

在应用程序的“报告”页面上,我使用了一个表格库,它也将报告导出为 CSV 文件。此库使用 HTML 页面的字符集作为导出的 CSV 文件的字符集,并且无法重新配置。但是,CSV 文件需要由无法理解 UTF-8 的旧系统导入。

我试图用来解决这个问题的方法是在我导航到报告页面/从报告页面导航时更改字符集(通过修改“元”标记)——这样库就会导出到一个更适合旧版应用程序的字符集. 我试过使用 angularjs,ng-if就像这样:

<head ng-controller="NavigationController">
  <meta ng-if="!onReportsPage" charset="utf-8">
  <meta ng-if="onReportssPage" charset="windows-1252">
  ...
</head>

我也尝试过手动删除/添加元标记,如下所示:

<head id="head">
  <meta id="charset" charset="utf-8">
  ...
</head>

...

// called when navigating to the "reports" page
var head = document.getElementById('head');
var oldCharsetTag = document.getElementById('charset');
head.removeChild(oldCharsetTag);
var newCharsetTag = document.createElement('meta');
newCharsetTag.setAttribute('id', 'charset');
newCharsetTag.setAttribute('charset', 'windows-1252');
head.appendChild(newCharsetTag);
...
// called when navigating away from the "reports" page (similar)
...
newCharsetTag.setAttribute('charset', 'utf-8');
...

从 angular/javascript POV 来看,字符集似乎在 DOM 中已成功更改,但是这两种方法似乎都不起作用(我已经在 Chrome 中测试过)。即使我更改了head元素,该库仍会导出为 UTF-8。我曾考虑将报告页面嵌入到 iframe 中,以便它可以从一开始就使用自己的编码,但这需要对页面及其资源进行大量重写。有没有人有任何其他想法?

谢谢您的帮助。

更新:根据这个页面,我尝试过的方法永远不会奏效。谁能想到替代方案?我只想让库(角度数据表)以不同的编码导出 CSV。

4

0 回答 0