IEがUTF-8エンコードされたテキストを表示できないのはなぜですか?
-
28-09-2019 - |
質問
私はケンチコ駆動のウェブサイトに表示しようとしている漢字をいくつか持っています。このテキストは、Kenticos FCKエディターにコピー/貼り付けられ、保存されてサイトに表示されます。 Firefox、Chrome、およびSafariでは、キャラクターはまさに予想どおりに表示されます。 IE 8標準モードでは、ボックスのみが表示されます。
テキストはUTF-8エンコードされており、私が知る限り、サーバーからの応答で正しくエンコードされています。があります Content-Type: text/html; charset=utf-8
応答ヘッダー、およびa <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
ページのメタタグも。サーバーからHTMLをダウンロードし、問題の文字のバイトを元のUTF-8テキストドキュメントと比較すると、HTMLにはBOMが含まれていません。
これは、標準モードのIE 8に固有のようです。 IE 8 Quriks:それは機能します。 IE 7標準:機能します。つまり、7つのQuirks:Works。標準モードがこの問題をどのように引き起こすかはわかりません。
奇妙なことに、IEからソースを表示すると、キャラクターがソースビューに正しく表示されます。
ここで何が間違っているのかについての提案はありますか?明白なものが足りないのですか?
解決
詳細に説明できません。しかし、これは確かに既知の問題です。
これが小さな再現可能なコードスニペットです:
<!DOCTYPE html>
<html lang="en">
<head><title>test</title></head>
<body><p>ﺡ<br>0 0</p></body>
</html>
UTF-8で保存し、IE8で表示します。何も見えません。交換 0 0
に 00
ページをリロードします。うまくいきます!これは絶対に驚くべきことです。奇妙なことに、交換 0 0
に a a
または <br>
aによって </p><p>
それも修正します。 Whitespaceレンダリングの失敗と関係があります。
申し訳ありませんが、これを証明する権限のリソースはありませんが、これはIE8が予想ほど良くない別の証拠にすぎません。あなたの最善の策は、HTMLを変更しようとするか、/またはそれを段階的に構築して、ある時点で動作するか、無駄に動作するようにすることです。次のメタタグをヘッドに追加してIE8をIE7モードに強制します。
<meta http-equiv="X-UA-Compatible" content="IE=7" />
他のヒント
デフォルトのIEエンコーディングは西ヨーロッパ(ISO)であるため、UTF-8に手動で変更するか、IEを実施して特定のエンコードを使用して次のように使用する必要があります。
HTML 4.01
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
HTML 5
<meta charset="UTF-8">
また、使用する必要があります lang
属性 <html>
言語を宣言するタグ
<html lang="zh">
中国語のために
野生の推測ですが、それはフォントの問題かもしれません。ブラウザが利用できるフォントは、上記の漢字を表すことができます。
ファイルのUTF形式を「バイトオーダーマークを使用してUTF8」に変更することで、同じ問題を修正することができました。
(私が使用するエディターでは、ファイル形式を簡単に切り替えることができます。それ以外の方法を進める方法はわかりませんが、さまざまなUTFファイル形式を見る価値があります。つまり、バイトオーダーマークなしでUTF8が好きではありません...)
また、上記の答えからスニペットを再現することもできました。
<!DOCTYPE html>
<html lang="en">
<head><title>test</title></head>
<body><p>ﺡ<br>0 0</p></body>
</html>
しかし、私の結果は、BOMなしでUTFにいる間は「断続的」でした(時にはアクセントが現れ、他の時には奇妙なcharが表示されることがあり、私には私にはホワイトスペースのレンダリングの問題のように見えませんでした...) lang = "fr"およびlang = "es"ですが、すべての場合において、UTFファイル形式の変更により、アクセントが表示された問題が永久に解決されたようです。 :)
私はUTFに100%精通していませんが、Charが2バイトを使用してコーディングされている場合、ホワイトスペースの問題と誤解されたCharがソース内のバイトの誤ったバイトに関連する可能性があると想定する必要があります。
これは、Rails 3が雪だるまのキャラクターを出力に追加したのと同じ種類のものかもしれません。 Ruby on Rails 3フォームの_snowman Paramとは何ですか?