1

Web ページでこの文字を正しく表示できません。このページでは UTF-8 文字セットを使用していますが、ISO-8859-2 を使用する必要がありますか? データベースからこの文字を含む文字列を取得しています。その上に、として保存されěます。私のブラウザはhtmlタグしか表示しません。

これは、(現時点では) 私の Web ページに表示できない唯一の文字です。http://www.czech.czを調べたところ、UTF-8 が使用されています。

何か提案はありますか?

気をつけて!アンドレア

4

2 に答える 2

1

ブラウザで表示されていますかě、それともソースを表示したときに表示されていますか? ブラウザで表示されている場合は、おそらくどこかで二重にエンコードされています.ページに出力するものは、おそらくそれをエンコードされていないHTMLとして検出し、何らかのHTMLインジェクションから保護しようとしています. そうならないようにしたいと思うでしょう。しかし、あなたにはもっと深刻な問題があります。ページが UTF-8 で提供され、データが UTF-8 である場合、そもそもそれを HTML エンティティに変換する理由はありません。UTF-8 データを渡す必要があります。別の文字エンコーディングに切り替える必要はありません。

于 2010-04-26T15:26:38.263 に答える
1

まず第一に、はい、本当に UTF-8 を使用する必要があります。ただし、データがすでに UTF-8 でエンコードされているわけではありません。

第二に、その文字はすでにデータベースで HTML エンコードされているようです。これは問題です。この文字を表示しているページは、コンテンツを HTML エンコードしようとしているように見えるからです。これが私が話していることの例です。

ユーザーからのデータ: DB に入る前に( htmlentities()ě
を介して) HTML エンコード されたデータ: DB に保存されたデータ: DB から取得されたデータ : ページに出力される前に HTML エンコードされた データ: ブラウザーに表示されるデータ:ě
ě
ě
ě
ě

あなたはあれが見えますか?文字は二重にエンコードされるため、2 番目のエンコード手順でアンパサンド文字がエンティティ自体に変換されます。

これは、データベースに格納する前の HTML エンコード データの問題です。これは、保存前ではなく、コンテンツを表示する前にのみ行う必要があります。

于 2010-04-26T15:36:33.433 に答える