У меня есть приложение одной страницы, которая определяет кодировку UTF-8 с «мета» метки в голове:изменениями- Charset с Javascript
<head>
<meta charset="utf-8">
...
</head>
...
На странице «Отчеты» в приложении, я используйте библиотеку таблиц, которая также экспортирует отчет в виде файла CSV. Эта библиотека использует кодировку HTML-страницы в качестве кодировки для экспортированного CSV-файла, и это невозможно переконфигурировать. Однако файл CSV необходимо импортировать с помощью устаревшей системы, которая не может понять UTF-8.
Подход, который я попытался использовать для преодоления этой проблемы, заключается в изменении кодировки (путем изменения тега meta) при каждом переходе на страницу отчетов с нее - таким образом, библиотека будет экспортировать в кодировку более приемлемой к устаревшему приложению. Я попытался с помощью 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');
...
Из углового/javascript POV кодировка, кажется, успешно изменена в DOM, однако ни один из методов не работает (я тестировал в Chrome). Библиотека по-прежнему экспортируется как UTF-8, хотя я изменил элемент head
. Я думал о встраивании страницы отчетов в iframe, поэтому он может использовать свою собственную кодировку с самого начала, но для этого потребуется большая переработка страницы и ее ресурсов. У кого-нибудь есть другие идеи?
Спасибо за помощь.
ОБНОВЛЕНИЕ: согласно this page, подход, который я пробовал, никогда не будет работать. Может ли кто-нибудь подумать об альтернативе? Я просто хочу, чтобы библиотека (угловые-datatables) экспортировала CSV с другой кодировкой.
Как насчет размещения отчетов в iframe с метатегом с новой кодировкой? – neilsimp1
@ neilsimp1: Я подумал об этом, но для внесения изменений в страницу «Отчеты» потребуются значительные изменения, чтобы заставить его работать независимо. Я надеюсь, что есть решение, в котором меньше работы. –