8

文字セットをiso-8859-1からutf-8に切り替えたWebページを使用しています。ページの上部は次のようになります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>[title of site]</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

ページではASCII文字のみを使用していますが、utf-8エンコーディングはASCIIをスーパーセットするため、これで問題ありません。ただし、テキスト内の一重引用符は、黒いひし形で囲まれた疑問符として表示されています。これらがASCII一重引用符(一重引用符ではない)であることを確認しました。

PHP、魔法の引用符、データベース構成などに関連する問題の解決策を説明するオンラインをたくさん読んだことがあります。ただし、これはどのプログラムでもレンダリングされないフラットなHTMLページです。

また、この問題を抱えている多くの人は、問題を解決するためにUTF-8に切り替えるように言われています。これがまさに私が問題を導入した方法です。

この問題を確認するには、http://mch.blackcatwebinc.com/src/events.htmlを参照してください

4

6 に答える 6

9

ASCIIの唯一の引用符は、一重引用符'(0x27または39)と二重引用符 "(0x22または33)です。145(0x91)と146(0x92)に引用符を配置する8ビットエンコーディングがあります。 CP1252;これはWindows用の標準の8ビット西ヨーロッパエンコーディングです。UTF-8が必要な場合は、UTF-8ではないため、UTF-8に変換する必要があります。有効なUTF-8は、文字に複数のバイトを使用します。 127(0x7F)より上で、開始クォートと終了クォートをそれぞれU+2018とU+2019に配置します。

于 2012-08-03T05:12:58.483 に答える
2

W3Cによると、meta charset

ヘッド要素の上部にできるだけ近く表示する必要があります

http://www.w3.org/International/questions/qa-html-encoding-declarations#metacontenttypeから

だから、私はmetaタグを。の上に配置しようとするかもしれませんtitle

また、@ user1505373による最初の回答で述べたように、UTFは常に大文字で表示さ=れ、私が見た例の後にはスペースがありません。

于 2012-08-03T03:42:50.307 に答える
1

ソースコードはUTF-8ではなくLatin1CP1252に保存されますこれらの引用符は単純な引用符ではなく、U + 2019 RIGHT SINGLE QUOTATION MARKS(Latin1でエンコード)です。ソースファイルをUTF-8に保存すると、機能します。

于 2012-08-03T06:07:33.207 に答える
1

meta最も簡単な修正は、タグ内のUTF-8をwindows-1252に変更することです。これは、サーバーがContent-Typeヘッダーでエンコードをアナウンスしないために機能します。したがって、ブラウザーや他のクライアントは、metaタグで指定されたエンコードを使用します。

名前windows-1252は、8ビットWindows Latin-1エンコーディングの推奨MIME名であり、cp1252およびその他の名前(「ANSI」と誤って表現されることが多い)としても知られています。

@decezeが説明しているように、データの実際のエンコーディングはWindows-1252であり、UTF-8ではありません。または、オーサリングソフトウェアで適切なコマンドを使用してファイルを保存することにより、実際のエンコーディングをUTF-8に変更することもできます。しかし、本当に重要なのは、宣言されたエンコーディングが実際のエンコーディングと一致することです。

さらに別の可能性は、などのアポストロフィに「エスケープ」を使用すること&rsquo;です。これらはエンコーディングとは独立して機能しますが、ソースコードが読みにくくなります。

于 2012-08-03T10:46:14.123 に答える
0

あなたのタグと私が取り組んでいるサイトのタグとの唯一の違いは、セミコロンの後のスペースと、utfが小文字であるということです。UTFを大文字にしてみてください。

于 2012-08-03T03:23:50.727 に答える
0

すべてのASCII印刷可能文字には、同等のHTMLエンティティコードがあります。これらの文字の一部は、一般的に最も一般的なOS書体でサポートされており、一部は、レンダリングの問題を引き起こすシンボルとして分類されています。

おそらく、最後の一重引用符があります。正しく印刷するには、エンティティコード、または&#146;を使用する必要があります。それぞれ。冒頭の一重引用符になる場合は、&#145;を使用する必要があります。代わりは。

2つのASCII文字(およびそれ以上)にはHTMLエンティティ名がないため、エンティティコードバリアントを選択する必要があることに注意してください。

于 2012-08-03T04:31:29.227 に答える