web-dev-qa-db-ja.com

HTMLでのUnicodeシンボルの表示

HTMLページに単純に目盛り(✔)と十字(✘)のシンボルを表示したいのですが、ボックスまたはgoopのいずれかとして表示されます–明らかにエンコードに関係しています。

メタタグを設定してutf-8を表示しましたが、明らかに何かが欠けています。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

編集/ソリューション: FireBugを使用して行われたコメントから、ページで渡されるヘッダーは実際には「Content-Type:text/html」であり、UTF-8ではないことがわかりました。 Notepad ++を使用してファイル形式を見ると、ファイルが「UTF-8 without BOM」としてフォーマットされていることがわかりました。これを単にUTF-8に変更すると、シンボルは正しく表示されるようになりました...

85
Peter Craig

HTTPサーバーのヘッダーが正しいことを確認する必要があります。

特に、ヘッダー:

Content-Type: text/html; charset=utf-8

存在する必要があります。

HTTPヘッダーが存在する場合、ブラウザはメタタグを無視します。

また、ファイルを実際にUTF-8としてエンコードしたことを確認してから、次を確認/試してください。

  • エディターでUTF-8として保存してください。
  • FTPまたはファイル転送プログラムがファイルに干渉しないようにしてください。
  • &#uuu;などのHTMLエンコードされたエンティティを試してください。
  • 確かに、ファイルを16進ダンプし、キャラクターとして見てください。✔の場合、E2 9C 94である必要があります。

注:システムがグリフを見つけることができないユニコード文字(その文字のフォントがない)を使用する場合、ブラウザーには疑問符または記号のようなブロックが表示されます。ただし、複数のローマ字が表示される場合は、エンコードの問題を示しています。

51
Nicolas Goy

回答がすでに受け入れられていることは知っていますが、いくつかの点を指摘したかったのです。

content-typecharsetを設定することは明らかに良い習慣です。サーバー上で設定することは、アプリケーション全体で一貫性を保証するため、はるかに優れています。

ただし、アプリケーションの言語がUTF-8文字セットでのみ使用可能な多くの文字を使用する場合にのみ、UTF-8を使用します。いずれかのケースでUnicode文字または記号を表示する場合は、ページのcharsetを変更せずに表示できます。

HTMLレンダラーは、numeric character reference (NCR)でシンボルに言及している限り、常にページのエンコーディング文字セットの一部ではないシンボルを表示できます。奇妙に聞こえますが、本当です。

したがって、htmlansiまたはiso文字セットのエンコードがあることを示すヘッダーがある場合でも、そのhtml文字参照を使用してチェックマークを表示できます。 10進数-#10003;または16進数-#x2713;

したがって、ページでこの問題に直面している理由を理解するのは少し難しいです。 NCR値が正しいかどうかを確認できますか?これは良いリファレンスです http://www.fileformat.info/info/unicode/char/2713/index.htm

15
Akshay

実際にファイルをUTF-8として保存するか、代わりに特殊文字にHTMLエンティティ(&#nnn;)を使用してください。

5
Guffa

ニコラスの提案とは異なり、metaタグは実際にはブラウザに無視されません。ただし、Content-Type HTTPヘッダーは、ドキュメント内のmetaタグの存在よりも常に優先されます。

そのため、HTTPヘッダーを介して正しいエンコードを送信するか、このHTTPヘッダーをまったく送信しないようにしてください(推奨されません)。 metaタグは、主にHTTPトラフィック経由で送信されないローカルドキュメントのフォールバックオプションです。

HTMLエンティティの使用も回避策と見なされる必要があります。これは実際の問題を回避するためのものです。 Webサーバーを適切に構成することで、多くの迷惑を防ぎます。

5
Konrad Rudolph

これはファイルの問題だと思います。latin-1のような1バイトエンコーディングでファイルを保存しただけです。エディターをGoogleで設定し、ファイルをutf-8に設定する方法。

Utf-8をデフォルトにしないエディタがあるのはなぜだろうか。

0
Kugel