1

そのため、ISO-8859-1 エンコーディングを使用するサイトを取得しましたが、それを変更することはできません。サイトの Web アプリに入力したコンテンツが正しく解析されるようにしたいと考えています。パーサーは、文字単位で機能します。また、パーサーを変更することもできません。パーサーが処理するファイルを作成しているだけです。解析後に表示するようにアプリに指示しているファイルのコンテンツには、Unicode 文字が含まれています (または、CP437 にマップされた Windows Alt コードによって生成されたものであっても、少なくともそう仮定します)。パーサーの文字ごとの操作のため、エンティティを使用することはできません。パーサーが出力時にエスケープする唯一の文字は、アンパサンド、小なり記号、大なり記号などのマークアップに依存する文字です。先に進んでこれを実行して、どのように見えるかを確認しますが、出力は出版物でしか見ることができません。

要するに、サイトに、ISO-8859-1 を使用することになっていることを示すメタ タグが付いたサイトで ▼ÇÑ¥☺☻ を出力するように指示した場合、ブラウザは Unicode を自動検出して表示しますか?文字通り ISO-8859-1 として変換し、別の文字セットを取得しますか?

更新: http://doorstop.csh.rit.edu/home/testingに一時的なテスト サイトを作成しました。このサイトでは、BOM なしで UTF-8 を使用して Notepad++ でテスト ファイルを作成しましたが、エンコーディングを ISO に設定するメタ タグを使用しました。 -8859-1.

4

2 に答える 2

2

ISO-8859-1を期待するように指示されたものにUTF-8を送信すると、はい、 Mojibakeが取得されます:(

UTF-8 シーケンスは、上位ビットが設定された 8 ビット char (つまり、char 値 > 127) で簡単に導入されると考えてください。単純な 8 ビット文字エンコーディングが、特定のシーケンスを使用するように指示されたエンコーディングではなく、UTF-8 として解釈する必要があることをどのように決定するのでしょうか?

于 2010-05-29T07:00:30.517 に答える
1

パーサーが出力時にエスケープする唯一の文字は、アンパサンド、小なり記号、大なり記号などのマークアップに依存する文字です。

ISO-8859-1以外のものは、問題を引き起こす可能性があります。ISO-8859-1 としてエンコードされた HTML は、▼☺☻ のような文字を表示できますが、 としてエスケープするだけ▼☺☻です。それ以外の場合は、単にエンコーディングの範囲外です。

文字 ÇÑ¥ は ISO-8859-1 でサポートされており、正しく実装されたシステムで問題を引き起こすことはありません。

表示前にパーサーを使用してファイルを正しく解析できるかどうかは、パーサーの実装と、パーサーとその Web コンテナーが送信可能なエンコーディング メタデータを尊重するかどうかによって異なります。

Unicode は、複数のエンコーディングでサポートされている文字セットです。たとえば、UTF-8 としてエンコードされた U+263a e2 98 ba☺ は、ISO-8859-1 として扱われると â~º としてデコードされるバイトになります。

于 2010-05-29T07:35:17.063 に答える