HTML ページのエンコーディング。 不適切な Web ページのエンコードに関する問題を解決します。 検索エンジン用のメタタグ
エンコードが正しくない場合、サイト全体またはその一部が「kryapozyablov」として表示されます。 奇妙な文字によりテキストが読めなくなります。 この状況は、Web サーバーのエンコードが正しく構成されていない場合、または設定がない場合に発生する可能性があります。 考えられる選択肢と問題を解決する方法を考えてみましょう
HTML ページのエンコードが正しくありません
テストファイルを作成しましょう。
Sudo gedit /var/www/html/encoding.html
そこにコピーしてみましょう:
このファイルをブラウザで開いてみましょう http://localhost/encoding.html
ご覧のとおり、エンコードはブラウザによって誤って検出されます。
この状況を修正するにはいくつかの方法があります。 最も単純なことから始めましょう。Web ページのエンコーディングを明示的に指定します。 これはメタ タグによって行われ、メタ タグはタグ内に配置する必要があります。 頭:
この行をテスト ファイルに追加して、次のようにしましょう。
エンコードをチェックするテストファイル
次のスクリーンショットでわかるように、問題は解決されています。
ファイルのエンコーディングが異なる場合は、 UTF-8、それを次のように置き換えます 窓-1251または Web ページのエンコーディングと一致するもの。 ファイルのエンコードを検出する方法については、こちらをご覧ください。
これは、サーバー設定を変更せずにエンコードの問題を解決する最も簡単な方法でした。
テストファイルを元の状態に戻して、エンコーディングを指定する方法を検討してみましょう。
ファイルの場合 .htaccess Apache 設定によって有効になると、これらのファイルを使用して、Web サーバーによって送信されるページのエンコードを指定できます。 ファイルサポートを有効にするには .htaccess Apache 設定ファイル内 ( /etc/apache2/apache2.conf) 線のグループを見つける
そして交換してください
なし
すべてのオーバーライドを許可
この後、サーバーを再起動する必要があります。
Sudo systemctl restart apache2.service
ファイル .htaccessサイトと同じディレクトリに配置する必要があります。 私のサイトは Web サーバーのルート ディレクトリでホストされています。 同じものがある場合は、フォルダー内にあります /var/www/html/ファイルを作成する .htaccessそれにディレクティブを追加します デフォルト文字セットの追加その後に希望のエンコーディングを指定します。 例
AddDefaultCharset UTF-8
AddDefaultCharset windows-1251
特定の形式のファイルにのみ適用されるエンコードを指定できます。
AddCharset utf-8 .atom .css .js .json .rss .vtt .xml
ファイルのセットには、たとえば次のようなものを指定できます。
AddCharset utf-8 .html .css .php .txt .js
次のオプションは代替手段であり、有効にする必要がある特定の種類のファイルのエンコードを設定することもできます。 mod_headers:
ファイル内でも使用できる別のオプション .htaccess UTF-8 エンコーディングを設定するには:
IndexOptions +Charset=UTF-8
サイトが PHP である場合は、さらに次のコードを使用してエンコードを複製する必要がある場合があります。 php_valueのデフォルトの文字セット:
AddDefaultCharset windows-1251 php_valuedefault_charset "cp1251"
.htaccess ファイルを作成する代わりに、Web サーバー構成ファイルでエンコーディングを設定できます。 Apache CentOS/Fedora の場合、これは httpd.conf ファイルであり、Debian/Ubuntu の場合、これは apache2.conf ファイルです。 次の行を追加してエンコードを設定し、Web サーバーを再起動して変更を有効にします。
AddDefaultCharset UTF-8
PHPでUTF-8エンコーディングを設定する方法
PHP スクリプトでは、エンコーディングは次のように設定されています。 ヘッダ、 例えば:
Header("Content-Type: charset=utf-8");
通常、エンコーディングとともにコンテンツ タイプも示されます (この例では、HTML ページのオプション)。
Header("Content-Type: text/html; charset=utf-8");
RSS フィードの別のオプション:
Header("コンテンツタイプ: text/xml; charset=utf-8");
関数を覚えておいてください ヘッダブラウザへの出力の前に呼び出す必要があります。 それ以外の場合 (ブラウザへの出力がすでに行われている場合)、ヘッダーはすでに送信されています。 明らかに、この場合、それらを変更することはできなくなります。 ブラウザにエラーメッセージが出力された場合、ヘッダーは送信済みであるため、ヘッダーを使用するとエラーが発生します。 ヘッダーがすでに送信されているかどうかを確認するには、次を使用します。 ヘッダー送信済み.
ここで説明する方法は、PHP スクリプトがページのコンテンツを完全に生成する場合にのみ機能します。 静的ページ (html など) は utf-8 エンコードで保存する必要があります。 ほとんどの Web サーバーはファイルのエンコーディングを記録し、それに応じてヘッダーを追加します。 実際、PHP ファイルを utf-8 エンコーディングで保存すると、同じ結果が得られます。
MySQL データベースからの結果の間違ったエンコード
サイトが静的部分 (テンプレート) と、データベースから受け取ったデータから形成される動的部分で構成されている場合、サイトの一部のエンコーディングが正しく、サイトの別の部分が間違っているという状況が発生する可能性があります。 1つ。 この場合、Web サーバーの設定を変更しても無駄です。同じように、ページの一部のエンコードが間違っていることになります。
テーブルのエンコーディングを決定することから始める必要があります。 見ることができます phpMyAdmin:
「」という欄に注目してください。 比較"、エントリ" utf8_unicode_ci" は、エンコーディングが使用されることを意味します UTF-8.
phpMyAdmin を使用しなくても、MySQL DBMS に接続してテーブルのエンコードを確認できます。 このために:
Mysql -u root -p
データベース名を忘れた場合は、次のコマンドを実行します。
データベースを表示します。
information_schema データベース内のテーブルのエンコーディングを調べたいとします。
情報スキーマを使用します。
テーブルの名前を忘れた場合は、次を実行します。
table_name の全列を表示;
例えば:
GLOBAL_STATUS の全列を表示;
次のようなものが表示されます。
コラムを参照 照合。 私の場合はそこにあります utf8_general_ci、まるで utf8_unicode_ci、エンコーディング UTF-8。 ちなみに、エンコーディングの違いがわからない場合は、 utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci、そして MySQL データベースにどのエンコーディングを選択するかについても調べてください。
エンコーディング (私の場合は UTF-8) がわかったので、MySQL DBMS に接続するたびにクエリを順番に実行する必要があります。
名前を設定 UTF8 文字を設定 SET UTF8 SET 文字セットクライアント = UTF8 SET 文字セット接続 = UTF8 SET 文字セット結果 = UTF8
PHP では、これは次のように実行できます。
$this->mysqli = new mysqli($server, $username, $password, $basename); if ($this->mysqli->connect_error) ( $this->errorHandler_c->logError(1, "接続エラー (" . $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error , $_SERVER ["REQUEST_URI"] ) $this->mysqli->query("SET NAMES UTF8"); $this->mysqli->query("SET CHARACTER SET UTF8"); $this->mysqli->query("SETcharacter_set_client = UTF8"); $this->mysqli->query("SET 文字セット接続 = UTF8"); $this->mysqli->query("SETcharacter_set_results = UTF8");
ご了承ください UTF8これをテーブルに使用されているエンコーディングに置き換える必要があります。
ファイルエンコーディングの変更
新しいエンコーディングをインストールする代わりに、別の方法を選択し、ファイルのエンコーディングを変更する場合は、記事「」を参照してください。 ファイルの現在のエンコーディングを確認する方法と、ファイルを任意のエンコーディング (UTF-8 だけでなく) に変換する方法について説明します。
サーバーが送信しているエンコーディングを確認する方法
Web サーバーのエンコード設定 (ヘッダーで送信するエンコード) を確認する場合は、次のコマンドを使用します。
Curl URL -s -o /dev/null -D /dev/stdout | grep -E "文字セット"
代わりにその中で URLチェックしているサイトの実際のアドレスを入力します。 サイトが HTTPS を使用している場合は、プロトコルとともにサイト アドレスを指定します。たとえば、
カール https://softocracy.ru -s -o /dev/null -D /dev/stdout | grep -E "文字セット"
Web サイトにどのエンコーディングを選択するか
一般に、ページ エンコーディングとは何ですか。ページ エンコーディングとは何ですか。これは、ブラウザがページのコンテンツを正しく表示するのに役立ちます。 まったく知る必要のないエンコーディングが膨大にあります。 そして当然のことながら、ページのエンコードに問題が発生する可能性があります。
サイトのあるページにアクセスすると、そこには理解できない記号があり、そこからは何も理解できませんでした。一般に「クラコズヤブル」と呼ばれています。
ページナビゲーション:
- もちろん、私たちは主にロシア語に基づくエンコードに興味があります。
1.「utf-8」はユニバーサルエンコーディングです。
「windows-1251」はキリル文字です。
そしてここでは、もちろん、すでに 10 年前の経験自体について話さなければなりません...それではここで!
始めたばかりの最初の頃は、「windows-1251」エンコードで始めましたが、このエンコードでは常にいくつかの問題が発生し、今では覚えるのが難しくなりますが、最終的には「utf-1251」に切り替えました。 8”
そしてもちろん、この「utf-8」エンコーディングが実際に何を意味するのかについて数行書く必要があります。
UTF-8 (英語の Unicode Transformation Format, 8-bit から - 「Unicode 変換フォーマット、8 ビット」) は、可変バイト数 ( 1 ~ 4) であり、7 ビット ASCII エンコーディングとの完全な下位互換性を提供します。基本的に、データがページ上に正しく表示される必要があります...
- 開いているブラウザで、ctrl + U の組み合わせのボタンを押します。コードを含む追加のページが開くはずです。
- 通常、エンコーディングはページの先頭に配置されます。ここにエンコーディングの例を示します。ここでは、ページのエンコーディングは 4 行目にあります。 そしてそれは次のようになります:
これは、ページが utf-8 エンコーディングで作成されていることを意味します。
これは最も一般的なエンコーディングの 1 つです。
またはキリル文字エンコード:
- 単純な物理 (ファイル) の場合は、それをエディターで開き、エンコーディングを必要なエンコーディングに置き換えるだけです。
エンジンがある場合にページエンコーディングを変更するにはどうすればよいですか? 各エンジンには特定のロジックがあります。 どのスクリプトでもそうです。 通常のページと同様に、エンジンにはこれらのページを組み立てるためのブロックがあります。必要なのは、ブラウザーでエンコーディングを表示するブロックを見つけることだけです... - 場合によっては、このエンコーディングがさまざまな問題を引き起こすことがあります...
たとえば、一部のホスティング サイトはこのエンコーディングをサポートしていません。
エンコードが壊れているページは次のようになります。
- 実際、いわゆるクラコジャブリの発生にはいくつかの理由があります。
1.ページのエンコーディングが正しくありません。たとえば、エンコーディングを中国語に設定してキリル文字を書いた場合、何が起こるでしょうか? ブラウザは何を表示すればよいのか分からなくなり、つまらないものを表示してしまいます。
ブラウザの設定が正しくありません。 ブラウザは、ページのエンコーディングを示すこの文字列をページ上で自動的に見つけることができません。
3. サーバーはこのエンコーディングをサポートしていません。
エンコーディングの種類と種類
utf-8 表記は何を意味しますか?
ページのエンコーディングを決定するにはどうすればよいですか?
ページのエンコーディングはどこにありますか?
HTMLページのエンコーディングを変更する方法
間違ったエンコードの例。
なぜクラコジャブリがページに登場するのですか?
間違ったエンコーディングを変更するにはどうすればよいですか?
1.Web サイト上のページについて話している場合は、メモ帳でページを開き、ページのエンコードを変更する必要があります。 サイトがエンジン上にある場合は、エンコーディングが記述されているメイン ページを見つけて、適切なエンコーディングに変更する必要があります。
ブラウザがエンコードを正しく解釈しない場合。 次に、ブラウザを処理する必要があります。
3. これがサーバーの問題である場合は、.htaccess ファイルに次の記述を追加して変更を試みる必要があります。
初心者が直面する最も一般的な問題の 1 つ ウェブマスター(初心者だけではありませんが)、これは サイトのコーディングに関する問題。 私にとっても、ウェブサイトを作成するときに常に表示されます。」 アブラカダブラ「しかし、幸いなことに、私はこの問題を解決する方法を完全に知っているので、数秒以内にすべてを整理しました。そして、この記事では、同じくらい早く教えようとします」 サイトのコーディングに関する問題を解決する.
まず注目すべき点は、「abracadabra」の外観に関するすべての問題は、ドキュメントのエンコードとブラウザーによって設定されたエンコードの不一致に関連しているということです。 ある文書を考えてみましょう。 窓-1251、しかし何らかの理由でブラウザに表示されます UTF-8。 このような不一致の原因は、次のような理由である可能性があります。
一つ目の理由
メタタグが間違って書かれています コンテンツタイプ。 ドキュメントが記述されているエンコーディングが常に含まれている必要があることに注意してください。
2番目の理由
メタ タグは希望どおりに記述され、ブラウザには希望通りのものが表示されているようですが、何らかの理由でエンコードに問題がまだ残っています。 ここでの原因はほぼ確実に、ドキュメント自体のエンコーディングが異なることです。 で働いている場合 メモ帳++をクリックすると、右下に現在のドキュメントのエンコーディングの名前が表示されます (例: ANSI)。 メタタグを入れると UTF-8、ドキュメント自体は次のように書かれています。 ANSI、次に変換を実行します UTF-8(メニュー経由 " エンコーディング「とポイント」 BOM なしの UTF-8 に変換する").
3番目の理由
4番目の理由
そして最後に、最後の人気の理由は、 データベースのエンコーディングの問題。 まず、すべてのテーブルとフィールドが、サイトの残りの部分のエンコードと一致する同じエンコードで書かれていることを確認してください。 これで問題が解決しない場合は、スクリプトで接続した直後に次のリクエストを実行します。
セット名「utf8」
の代わりに " utf8" 異なるエンコーディングが存在する可能性があります。その後、データベースのすべてのデータが正しいエンコーディングで出力されるはずです。
この記事では、少なくとも次のことを説明できたと思います。 問題の 90% はサイト上の「意味不明な」表示に関連しています。 今度は、間違ったエンコードなどの一般的で単純な問題にすぐに対処しなければなりません。
Web サイトを作成するとき、初心者の Web マスターは、Web サイトにどのエンコードを使用するか、UTF-8 と Windows-1251 の違い、サイトの HTML ページの META 文字セットに UTF-8 を入力する方法など、よく質問します。 これらすべての質問に対する答えはこの記事にあります。
サイトのエンコーディングとは何ですか?またその仕組みは何ですか?
エンコードは、特定の方法でエンコードされた、人間が理解できるさまざまな文字、数字、その他の記号で構成されるテーブルの形式で表すことができます。 HTML ページを含むテキスト ファイルを開くと、コンピューターはファイル ヘッダーからファイルが保存されているエンコーディングを読み取り、適切なエンコーディングでテキストを表示し、このデータを人間が理解できる形式に変換します。エンコードテーブル。 ファイル ヘッダーのエンコード情報が HTML ページにデータが保存されているエンコードと一致する場合、ユーザーには見慣れた文字、数字、その他の記号が表示されます。 矛盾があると、ユーザーには理解できない文字セットが表示されます。これは特に古い電子メール プログラムでよく起こります。 ユーザーが理解できない意味不明な文字を受け取った場合、さまざまなエンコーディングを使用するだけで、通常、その手紙が書かれているエンコーディングを推測して選択することができ、その結果、理解できない文字セットが人間が理解できる文字セットに変わります。文章。
サイトの HTML ページでも同じことが起こります。 たとえば、ドキュメントが UTF-8 エンコードで保存され、ドキュメント自体に Windows-1251 エンコードであることを示す META タグが含まれている場合、ブラウザはファイルに保存されたデータをエンコードのテーブルと再度比較します。指定されており、文字は -Differencely に従ってエンコードされているため、ブラウザは通常のテキストの代わりに理解できない文字のセットを表示するか、一部の文字が通常の形式で表示され、他の文字や記号が表示されることがあります。たとえば、疑問符の形で。 上記はすべて、ファイル名の表示にも当てはまります。
テキスト エディタで新しいドキュメントを作成するときは、目的のエンコーディングが選択されていることをすぐに確認することをお勧めします。 最新のエディタでは、開いているドキュメントのテキストをあるエンコーディングから別のエンコーディングに変換できます。また、標準のメモ帳では、ファイルを保存するときにのみエンコーディングを選択できます。
最も一般的なエンコーディング
前の段落で、エンコーディングとは何か、そしてエンコーディングをサイト ページのコードに正しく記述することがなぜ非常に重要であるかをすでに理解しました。 ここで、将来のサイトに最適なエンコーディングを数多く選択してみましょう。 最も一般的で習得しやすいオペレーティング システムは常に Windows オペレーティング システムであるため、ほとんどの Web 開発者は、デフォルトで使用される Windows-1251 (ANSI) エンコーディングで HTML ページを作成しました。 しかし、Windows-1251 は非常に多くの文字や記号をサポートしておらず、開発者はテキスト内でさまざまな矢印、ハート、四角形、その他の記号を使用したいと考えており、1 つの文書内で異なる言語の単語を組み合わせる必要があるため、より拡張された UTF-8 が登場し、ほとんどの開発者がこのエンコーディングを使用するようになってから、長い間置き換えられてきました。
エンコードの問題は HTML ページだけではありません
サイトは、単に静的な HTML ドキュメントのコレクションであっても、その場でページを生成する複雑な動的スクリプトであっても、Web サーバー上でホストされており、特定のエンコーディングでも動作します。 また、サーバーがあるエンコーディングで情報を提供し、ページまたはスクリプトが別のエンコーディングで保存されている場合、ユーザーのブラウザでのページの表示に問題が発生する可能性があります。 多くのホスティングでは、コントロール パネルを使用して設定を変更し、サイト ファイルで使用されているエンコーディングに従ってエンコーディングを選択できます。また、ホスティングが一般的な Apache Web サーバーを使用している場合は、.htaccess ファイルにエンコーディングを書き込むことができます。
最近の Web サイトは、MySQL データベースを使用せずに機能するものはほとんどなく、エンコードの問題の原因となる可能性もあります。 サイト ファイルがあるエンコーディングで保存され、データベース内の情報が別のエンコーディングで保存されている場合、データベースから出力される情報の一部がページ上で同じ疑問符やその他の理解できない記号の形式で表示されることがあります。 。 エンコードに関する問題を回避するには、Web サーバー、MySQL データベース、スクリプト、サイトの HTML ページ、および HTML コードに記述された META タグでエンコードが同じである必要があります。 テキスト表示に問題がある場合は、上記のすべての問題を確認してください。
HTMLドキュメントのMETA文字セット
サイト ページがどのようなエンコーディングで保存されているかをブラウザーと検索エンジンに伝えるために、コードに META 文字セットが書き込まれます。
Windows-1251 エンコーディングの場合:
ページテキスト
UTF-8 エンコーディングの場合:
ページテキスト
これで、サイトのエンコーディングが何であるか、およびサイトのいずれかの部分でテキストが正しく表示されない場合に問題をどこで探すべきかがわかりました。
記事の転載を禁止します。
15.03.2016
まだ
こんにちは、みんな!
HTML の基礎を学び続けましょう。 このレッスンでは次のことを見ていきます HTMLエンコーディングを指定する方法サイト (Web ページ) の場合。
Web ページのエンコードを指定する方法がわからないと、ページが読めなくなる可能性があるため、このレッスンは非常に重要です。 「どうしてできないのですか?」とあなたは尋ねます。
私のブログが間違ったエンコーディングでどのように見えるかを示しましょう。
それで、 HTMLエンコーディング– コードとアルファベット記号の対応表です。 つまり、エンコード コンピューターはコードを明確で読みやすい文字に変更します。
Web ページ上の文字がどのようなエンコーディングであるかをブラウザに伝えるには、タグの間に記述する必要があります。
メタタグは次のとおりです。
コードには「エンコーディング名」という単語が含まれていることに注意してください。 ここで HTML エンコーディングを指定する必要があります。
通常、これは utf-8 または windows-1251 です。
エンコーディングUTF-8:
エンコーディングのために 窓-1251:
サイトまたは Web ページのエンコーディングをブラウザーに伝えるのを忘れた場合、ブラウザーはエンコーディングを自動的に決定しようとしますが、常に正しく成功するとは限りません。 最終的には、上の図で示したものと同じ結果になります。
練習に移りましょう。
HTMLドキュメントを作成する方法
utf-8エンコーディング
「すべてのプログラム」→「アクセサリ」→「メモ帳」 :
これはメタタグです:
メモ帳内をクリック 「ファイル」→「名前を付けて保存...」:
「Encoding:」の項目は「UTF-8」を指定しています。
「保存」をクリックします。
画像を拡大しますか?
Windows-1251 エンコードを使用して HTML ドキュメントを作成する方法
標準のメモ帳を開きます。 「すべてのプログラム」→「アクセサリ」→「メモ帳」
.
次に、標準の HTML コードをメモ帳に貼り付けます。
次に、Web ページがどのエンコーディングで保存されるかを示します。 これを行うには、タグの間に配置します
これはメタタグです:
これは次のようになります (行 #4)。
メモ帳内をクリック 「ファイル」→「名前を付けて保存...」:
「ファイル名」項目には、Webページの名前をラテン語で拡張子「.html」を付けて記述します。 最初のレッスンでこのことを覚えていると思います。
「Encoding:」項目を指定する場合は「ANSI」を指定してください。
「保存」をクリックします。
それだけです!
ほとんどのウェブマスターは UTF-8 エンコーディングを選択します。 HTML の知識の段階ではまだ必要のない情報を過剰に詰め込んでしまうと困るので、理由は説明しません。
たとえば、メモ帳で次のコードを設定します。
保存するときに「ANSI」を指定します。
これは間違っているので、結果は次のようになります。
このような結果を避けるために、Web ページを正しく保存してください
前の投稿
次のエントリ