Изменить кодировку страницы с помощью Javascript

У меня есть одностраничное приложение, в котором указана кодировка 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). Библиотека по-прежнему экспортируется как UTF-8, хотя я изменил элемент head. Я думал встроить страницу отчетов в iframe, чтобы она могла использовать свою собственную кодировку с самого начала, но это потребовало бы большой перезаписи страницы и ее ресурсов. У кого-нибудь есть другие идеи?

Спасибо за помощь.

ОБНОВЛЕНИЕ: согласно этой странице, подход, который я пробовал, никогда не сработает. Может кто придумает альтернативу? Я просто хочу, чтобы библиотека (angular-datatables) экспортировала CSV с другой кодировкой.


person Alvin Thompson    schedule 22.02.2016    source источник
comment
Как насчет того, чтобы поместить отчеты в iframe с метатегом с новой кодировкой?   -  person neilsimp1    schedule 22.02.2016
comment
@neilsimp1: Я думал об этом, но для этого потребуются значительные изменения на странице отчетов, чтобы заставить ее работать независимо. Я надеюсь, что есть решение, требующее меньше работы.   -  person Alvin Thompson    schedule 22.02.2016