Там ошибка, которую я пытаюсь найти здесь: https://github.com/OscarGodson/EpicEditor/issues/184#issuecomment-8805982
На основе всей информации это похоже на то, что браузер по умолчанию использует пользовательскую кодировку (в данном случае, ISO-8859-1
), а не UTF-8
, как на моей машине, и другие в США. Я предполагаю, что исправление заключается в использовании HTML для принудительного кодирования UTF-8
с помощью:
<meta charset='utf-8'>
или
<meta http-equiv='Content-Type' content='Type=text/html; charset=utf-8'>
Однако JS не работает. В первом примере:
charsetMetaTag = self.editorIframeDocument.createElement('meta');
charsetMetaTag.charset = 'utf-8';
self.editorIframeDocument.getElementsByTagName('head')[0].appendChild(charsetMetaTag);
Я просто возвращаю следующее, введенное в DOM:
<meta>
И во втором примере http-equiv
не устанавливается:
charsetMetaTag = self.editorIframeDocument.createElement('meta');
charsetMetaTag['http-equiv'] = 'Content-Type';
charsetMetaTag['content'] = 'text/html; charset=utf-8';
self.editorIframeDocument.getElementsByTagName('head')[0].appendChild(charsetMetaTag);
Я возвращаю следующий HTML:
<meta content="text/html; charset=utf-8">
Да, мне нужно сделать это динамически, поскольку я динамически создаю iframes. Возможно, это даже не проблема, но это то, на что это похоже. Единственный "хак", о котором я могу думать, как-то использует innerHTML...