web-dev-qa-db-ja.com

Webサイトに表示される奇妙な文字-ASCII? -UNICODE?

長年にわたり、非常に単純な純粋なHTML Webサイトを数多く作成してきました。それらのほとんどはほとんどの場合正常に動作するようです。しかし、奇妙なキャラクターが関与する問題を解決したことは一度もありません。

シナリオは次のようになります。サイトを作成します。私はブラウザでそれを見て、すべてがうまく見えます。私はあちこちで追加をするので、今後数週間または数ヶ月にわたって何度もそれを見るかもしれません。おそらく、さまざまなPCのさまざまなブラウザで。それからある日、私はページを見て、暗いダイヤモンドの形に対して白い疑問符がランダムに散らばっているのを見ます。これらは、ハイフン、引用符、またはアポストロフィが表示されると予想していた場所に表示される場合があります。私の当面の考えは、奇妙なキャラクターのある外国のウェブサイトを見ていたために、ブラウザが奇妙な状態になったと思いますが、よくわかりません。多分地球の半分が私のウェブサイトに面白い疑問符が付いているのを見ているというしつこい感じが残っています。

だから私の質問は何が起こっているのですか?世界中のできるだけ多くの人々が当初意図したとおりにテキストを表示できるようにするにはどうすればよいですか?次のような特別なhtmlシーケンスを使用する必要があります

£

すべての非英数字についてまったく心配する必要がありますか?

編集:現在、このページで問題が発生しています: http://www.fullreservebanking.com/papers.htm = ...その一部は次のようになります。

enter image description here

FireFox 5を使用していますが、文字エンコードは現在「UNICODE(UTF-8)」のようです。インストール以降、文字エンコードを手動で設定したことを覚えていません。仕事関連の理由で時々日本のウェブサイトを見ることがありますが、そうするときは、Firefoxの設定を手動で変更しません。

編集:修正されました。それに応じてWebページが変更されました。

3
Mick

これらはグレムリンと呼ばれ、引用符を挿入するプログラムが適切なHTMLエンティティの代わりに実際のプリティ/カーリー/スマート引用符を使用しているため、通常発生します。フォントが正しく表示されないか、それらの文字が含まれず、代わりに面白い記号が生成されます。

この素晴らしい記事 HTMLの引用に関係のない印刷上の奇妙な点に関するA List Apartを参照してください。

ユーザーに送信する前にWebページのコンテンツを実行するテキストプロセッサを作成するのが最善の方法です(実際には、コンテンツが生成された後、サーバーに保存される前にこれを実行するのが最善です)。このプロセッサは、これらの特殊文字の単純なテキスト置換を行い、代わりに適切なHTMLエンティティを提供します。

PHPマニュアルのこのページ は、PHPの優れたコード例を示しています。

7
dmsnell

hTMLエンティティの使用に関するdmsnellの答えは問題ありませんが、この問題は通常、ページ生成全体で適切なUTF-8を使用し、ユーザーに提供することで解決できます。

たとえば、データがデータベースに保存されている場合、すべてのテキストフィールドがUTF-8エンコーディングを使用していることを確認してください。また、データベースに接続するときに文字セットを設定する(PHPでPDOを使用する場合)か、接続後、データの取得を開始する前にクエリSET NAMES utf8を実行する必要があります。

文字列を変更しない場合、PHPはUTF-8を正常に処理します。もしそうなら、そのマルチバイトmb_*関数の使用を検討する必要があります。

ページ自体に、コンテンツタイプメタタグを追加します。開始<head>タグの直後に移動する必要があります。

<meta charset="utf-8">

代わりに、これをHTTPヘッダーとして設定することもできます。

7
DisgruntledGoat

つまり、WordPressおよびHTML5を使用している場合は、適切なutf-8エンコード文字のみをコピーすれば問題は解決します。 Googleの「utf-8文字のリスト」だけで、ブラウザからエディタに直接(ビジュアルモードで)コピーします。それから疑問符?のように表示されません

1
Tim Helmer