2009-09-03 7 views
3

ポンド記号がWebページに正しく表示されない(または表示されない)という非常に奇妙な問題が発生しています。UTF-8 IE6/ASP/XMLのポンド記号(£)からの不思議な動作

テキストボックスにテキストをキー入力しています。このテキストボックスは、新しいIE(6)ウィンドウに表示される前に(一時的に)XMLに格納されます。

最悪の部分はこれが矛盾していることです。
1.ポンド記号はソースコードにも表示されません(XMLはデフォルトでUTF-8を使用しているように見えます)。
2.ポンド記号はソースには表示されますが、ウェブページには表示されません。
3.ポンド記号は、WebページのソースAND FINEに表示されます(通常、これが最初に表示された場合はまったく発生します)。

これは大きな問題の特定の部分の1つに過ぎません。私はこれを一般的に見ていて、いくつかの研究をしてきました。プレーンなASCII(ISO 8859-1 - Western Europe)をUTF-8に変換すると、シンボルが何であるか分かりません。この場合、私はそれが '?'、ボックス、または逆さまに置き換えられたのを見たことがありますか? ')。

ポンド記号をUTF-8として入力し、ISO 8859-1に戻すと、ポンド記号の前に大文字のA帽子(Â)が表示されます。

少なくとも基本レベルではわかります。私たちのシステムでは、その中にさまざまな文字エンコーディングで保存された(またはOracleに格納された)ポンド記号が必要であり、私たちのウェブページのエンコード(少なくとも一般的に)、時々IEは混乱し、正しく表示されません。

私が理解していないことは、上記の矛盾した結果です。

最初の説明で少し曖昧だったことを認識していますが、私の簡単な説明を書くことは自分の考えを真っ直ぐにし、将来同様の問題を理解するのに役立つかもしれません。

EDIT:HTMLエンティティのすべてのポンド記号(& pound;)を交換することもできますが、これは時間がかかり、面倒です(Oracleに格納され、 、Excelなど)?

明らかに、任意のポインタとアドバイスをいただければ幸いです!

ありがとうございます!

+0

サーバープラットフォーム(存在する場合) – AnthonyWJones

+0

ありがとうAnthony:Windows 2003 Server – FrostbiteXIII

答えて

2

私は は、新しいIE(6) ウィンドウに表示される前に、XML に保存されている(簡単に)を取得し、テキストボックスにテキストをキーイングしています。

問題がこのシーケンスに埋め込まれている可能性があります。このシーケンスがどのように達成されているかの詳細を詳しく説明できれば助けになります。

この種の問題の最も一般的な原因は、クライアントが実際に文字をエンコードする内容と、エンコードが考えている内容との間の不一致です。これに対する最も簡単な解決策は、投稿の文字エンコードを明示的にするform要素にaccept-charset属性を配置することです。

stuff場に掲示テキストはUTF-8でエンコードされます。

何らかのinconsitencies理由は以下のとおりです。 -

  1. ことが可能ブラウザに、同じ文字を送ることが汚職を逆たときに、サーバーが誤っが、その後、DB内の文字をコーディングすることができ、物事は罰金に見えます再びブラウザに表示されます。
  2. ISO-8859-1は、場所が異なることを意味します。 IE6は、その文字セットではやや緩やかですが、実際にはWindows-1252として扱われます。他のアプリケーションでは、ISO-8859-1の解釈を解釈します。
+0

Anthonyに感謝します。これに関係のない別の問題に取り組んでください。実際には、私はこれを見直さなくてはならないかもしれませんが、実際にしたくない場合でも、htmlエンティティ(£)のポンド記号を検索して置き換えてください。 私は取得時にポストを更新しますさらに、詳細な返信を感謝します(私は15の担当者がいるので、私がそれを得るとすぐにあなたの応答と同様に "いいえ")。 – FrostbiteXIII

+0

@FrostbiteXIII、とにかくあなたのための10);)。 – AnthonyWJones

+0

ありがとう(カントは、この無意味な行でそれを埋め尽くさなくても、ちょうど感謝を言うことができないと信じて、15文字以上にする!)! :) – FrostbiteXIII

0

あなたは、サイトがどの文字エンコードが使用されているかを必ずしも言っているとは限りません。その場合、ブラウザは推測する必要があります。そして、それらは異なるページで異なって推測するかもしれません。これは、あなたが矛盾を見ている理由の可能性が高いです。

文字エンコーディングの多くは "ASCIIプラス"(ASCIIプラス拡張ラテン文字、ASCIIプラスギリシャ文字、ASCIIプラスキリル文字アルファベットなど)です。どのようにしてブラウザが意図されているかを知っていますか? 1つの方法は、コードポイントの頻度を調べることです。「キリル文字のギリシャ語で文字「?A」、キリル文字で文字「?B」となるコードポイント[blah]が多数表示されています。 A]はギリシャ語ではあまり一般的ではありませんが、[?B]はブルガリア語ではかなり頻繁に出てくるので、このページはキリル文字のアルファベットである可能性が非常に高いです。そんなこと。つまり、ページ上のわずかに異なるテキストがコードポイントの周りをシャッフルすると、ブラウザはテキストエンコーディングを完全に異なって解釈する可能性があります。このため、最近UTF-8を使用しています。また、HTTPヘッダーとメタタグでテキストエンコードを宣言する理由もあります。

関連する問題