У меня есть одностраничное приложение, в котором указана кодировка 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 с другой кодировкой.
iframe
с метатегом с новой кодировкой? - person neilsimp1   schedule 22.02.2016