16

ここで追跡しようとしているバグがあります: https://github.com/OscarGodson/EpicEditor/issues/184#issuecomment-8805982

すべての情報に基づいて、ブラウザがユーザーのネイティブ文字セット (この場合は)にデフォルト設定されており、私のマシンや米国の他のマシンとは異なるためのようです。HTMLを使用してエンコーディングを強制することで修正できると思います:ISO-8859-1UTF-8UTF-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>

2番目の例で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">

はい、動的に iframe を作成するので、これを動的に行う必要があります。これは問題ではないかもしれませんが、これはどのように見えるかです。私が考えることができる唯一の「ハック」は、どういうわけかinnerHTMLを使用することです...

4

3 に答える 3

20

charsetプロパティは相互に反映されていないため、charsetプロパティを設定してcharsetcontent属性を設定することはできません。実際、charsetcontent属性を反映するプロパティはありません。

http-equiv content属性はhttpEquivプロパティに反映されるため、

 charsetMetaTag['httpEquiv'] = 'Content-Type';

メタ要素を正しく作成します。

しかし、これは重要ではありません。文字セットはパーサーによって確立されるため、HTMLが解析された後にJavaScriptでメタ要素を作成しても、ドキュメントの文字セットにはまったく影響しません。

于 2012-09-24T07:00:35.383 に答える