ホームページ  >  記事  >  バックエンド開発  >  さまざまな php エンコーディング セットとそれらを使用する必要がある状況の詳細な説明_PHP チュートリアル

さまざまな php エンコーディング セットとそれらを使用する必要がある状況の詳細な説明_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:24:36677ブラウズ

文字セットは複数の文字の集合であり、各文字セットには異なる数の文字が含まれています。ASCII 文字セット、GB2312 文字セット、GB 18030 文字セットです。 、Unicode 文字セットなどコンピューターがさまざまな文字セットのテキストを正確に処理するには、コンピューターがさまざまなテキストを認識して保存できるように文字エンコーディングが必要です。

中国語には多くの文字があり、また、異なる表記規則を持つ簡体字中国語と繁体字中国語の2種類の文字に分けられます。コンピューターは元々英語の半角文字に基づいて設計されているため、中国語の文字をエンコードすることになります。中国の技術基盤の基礎。この記事では、いくつかの代表的な文字セットを文字セットの年代順に説明し、いくつかの代表的な漢字セットを選択し、その歴史的起源、特徴、および技術的特徴を検討します。

ASCII文字セット

1.名前の由来

ASCII(American Standard Code for Information Interchange、American Standard Code for Information Interchange)は、ローマ字に基づくコンピュータコーディングシステムです。

2. 特徴

主に現代英語やその他の西ヨーロッパ言語を表示するために使用されます。これは現在最も一般的なシングルバイト エンコード システムであり、国際標準 ISO 646 と同等です。

3. コンテンツが含まれています

制御文字:Enterキー、バックスペース、改行キーなど。

表示できる文字:英語の大文字、小文字、アラビア数字、スペイン語記号

4.技術的特徴

7ビットで1文字、合計128文字を表す

5.ASCII拡張文字セット

7 -bit エンコーディング ASCII の文字セットは 128 文字しかサポートできません。より一般的に使用されるヨーロッパ文字を表すために、ASCII 拡張文字セットは 8 ビットを使用して文字を表現し、合計 256 文字を使用します。

ASCII拡張文字セットによって拡張された記号には、表形式の記号、計算記号、ギリシャ文字、特殊なラテン文字などがあります。

GB2312文字セット

1.名前の由来

GB2312はGB2312-80文字セットとも呼ばれ、正式名称は「情報交換用中国語コード化文字セット基本セット」で、旧中国国家総局が発行したものです。 1981 年 5 月の基準 1 月 1 日に施行。

2. 特徴

GB2312は中国の国家標準の簡体字文字セットです。含まれる漢字は使用頻度の 99.75% をカバーしており、基本的に漢字のコンピュータ処理ニーズを満たしています。中国本土とシンガポールで広く使用されています。

3. 含まれるコンテンツ

GB2312には、簡体字中国語文字と一般記号、シリアル番号、数字、ラテン文字、日本語のかな、ギリシャ文字、ロシア文字、中国語のピンイン記号、中国語の表音文字、合計7445個のグラフィック文字が含まれています。これには、第 1 レベルの中国語 3,755 文字と第 2 レベルの中国語 3,008 文字を含む 6,763 文字、ラテン文字、ギリシャ文字、日本語のひらがなおよびカタカナ文字、ロシア語のキリル文字を含む 682 個の全角文字が含まれています。

4. 技術的特徴

(1) パーティション表現:

GB2312 は収集された漢字を「パーティション」し、各ゾーンには 94 個の漢字/記号が含まれます。この表現は位置コードとも呼ばれます。

各エリアに含まれる文字は次のとおりです: エリア 01 ~ 09 は特殊記号、エリア 16 ~ 55 はピンイン順にソートされた第 1 レベルの漢字、および部首ごとにソートされた第 2 レベルの漢字です。ストローク、エリア 10 ~ 15 およびエリア 88 ~ 94 はコード化されていません。

(2) 全角表現

2バイトのうち、最初のバイトが1バイト目、後半のバイトが2バイト目となります。通常、最初のバイトを「上位バイト」と呼び、2 番目のバイトを「下位バイト」と呼びます。

「上位バイト」は0xA1~0xF7(エリア01~87の市外局番に0xA0を加算)、「下位バイト」は0xA1~0xFE(0xA0に01~94を加算)を使用します。

5. エンコーディングの例

GB2312 文字セットの最初の漢字「あ」を例に挙げます。その市外局番は 16 で、ビット番号は 01 です。市外局番は 1601 です。バイトと下位バイトにそれぞれ0xA0を追加して、プログラムの漢字処理コード0xB0A1を取得します。計算式は、0xB0=0xA0+16、0xA1=0xA0+1となります。

BIG5 キャラクターセット

1. 名前の由来

Big Five または Big Five とも呼ばれ、1984 年に台湾情報産業評議会と 5 つのソフトウェア会社によって開発されました: Acer、MiTAC、Jiajia、ゼロワンとFICなのでビッグファイブと呼ばれています。

Big5 コードが作成されたのは、当時の台湾のさまざまなメーカーが、相互に互換性のない異なるコード (Yitian コード、IBM PS55、湾岸コードなど) を発売していたためでしたが、台湾政府は互換性を持っていませんでした。まだ公式の中国語文字コードを導入しており、中国本土の GB2312 エンコードには繁体字中国語の文字が含まれていません。

2. 特徴

Big5 文字セットには、合計 13,053 個の漢字が含まれています。この文字セットは、台湾、中国で使用されています。興味深いのは、この文字セットには同じ 2 つの文字、「兀」 (0xA461 および 0xC94A) と「嗀」 (0xDCD1 および 0xDDFC) が繰り返し含まれていることです。

3. 文字エンコード方式

Big5 コードは 2 バイトの格納方式を採用しており、単語をエンコードするのに 2 バイトを使用します。最初のバイトは「上位バイト」と呼ばれ、2 番目のバイトは「下位バイト」と呼ばれます。上位バイトのエンコード範囲は0xA1~0xF9、下位バイトのエンコード範囲は0x40~0x7E、0xA1~0xFEです。

各エンコード範囲に対応する文字の種類は次のとおりです: 0xA140 ~ 0xA3BF は句読点、ギリシャ文字、特殊記号です。さらに、0xA259 ~ 0xA261 には 2 音節の測定単位の単語が格納されます: 噙兛兞兝兡嗧。瓩玎; 0xA440 -0xC67E は一般的に使用される漢字で、最初にストロークで並べ替え、次に部首で並べ替えます。0xC940-0xF9D5 は、最初にストロークで並べ替え、次に部首で並べ替えます。

4. Big5の限界

Big5のコードには10,000文字以上が含まれていますが、社会に流通している人名、地名、方言、化学や生物学の単語は考慮されておらず、日本語の平易な文字も含まれていません。 . かなとカタカナ文字。

例えば、台湾では「朱」という言葉は「朱」の変化体であると考えられているため、「朱」という言葉は含まれません。康熙辞典の一部の部首(「亠」、「疒」、「辵」、「綶」など)、通称(「君」、「玄」、「檜」、「喆」など) 」など)はBig5には含まれません。

GB18030文字セット

1. 名前の由来

GB 18030の正式名称はGB18030-2000「情報交換用中国語文字コード化文字セットの基本セットの拡張」であり、によって発行された新しい文字セットです。中国政府は 2000 年 3 月 17 日に、中国語の文字エンコーディングに関する国家標準を定めました。2001 年 8 月 31 日以降に中国市場でリリースされたソフトウェアは、この標準に準拠する必要があります

2. 特徴

GB 18030 文字セット標準の導入により、大幅な変更が加えられました。国内外の著名なIT業界の代表者が参加し、デモンストレーションを行った。同社、情報産業部、旧国家品質技術監督総局が共同で実施した。

GB 18030 文字セット標準は、中国語の文字、日本語のかな、韓国語、および中国の少数文字で構成される大規模な文字セットのコンピュータエンコードの問題を解決します。この規格の合計文字エンコーディング スペースは 150 万エンコーディング ビットを超え、中国語、日本語、韓国語、および中国の少数文字をカバーする 27,484 個の中国語文字が含まれています。中国本土、香港、台湾、日本、韓国などの東アジアでの情報交換のための、多言語、大きなフォント サイズ、多目的で統一されたコーディング形式の要件を満たしています。 Unicode バージョン 3.0 とも互換性があり、Unicode 拡張文字語彙「統一漢字拡張 A」の内容を満たしています。また、以前の各国文字エンコーディング標準 (GB2312、GB13000.1) と互換性があります。

3. エンコード方式

GB 18030規格では、文字のエンコードにシングルバイト、ダブルバイト、4バイトの3つの方式が使用されています。半角部分は0x00~0x7Fのコード(ASCIIコードの対応コードに相当)を使用します。 2 バイト部分では、最初のバイト コードの範囲は 0x81 ~ 0xFE、最後のバイト コード ビットはそれぞれ 0x40 ~ 0x7E と 0x80 ~ 0xFE です。 4 バイト部分は、GB/T 11383 では使用されていない 0x30 ~ 0x39 を 2 バイトエンコード拡張のサフィックスとして使用します。拡張された 4 バイトエンコードの範囲は 0x81308130 から 0xFE39FE39 です。最初と 3 バイトのエンコード コード ビットはすべて 0x81 ~ 0xFE で、2 バイト目と 4 バイトのエンコード コード ビットはすべて 0x30 ~ 0x39 です。

4. 含まれるコンテンツ

全角部分に含まれるコンテンツには、主に GB13000.1 の全 CJK 漢字 20,902 個、関連する句読点 13 個、表意文字記述子、補助漢字 80 個と部首/コンポーネント、および二重文字セクションが含まれます。 -エンコードされたユーロ記号など4 バイト部分には、上記の 2 バイト文字を除く、CJK 統一中国語文字拡張 A を含む GB 13000.1 のすべての文字が含まれます。

Unicode 文字セット

1. 名前の由来

Unicode 文字セットエンコーディングは、Universal Multiple-Octet Coded Character Set の略称で、Unicode Consortium という団体によって開発された文字エンコーディングシステムです。今日の世界のさまざまな言語で書かれたテキストの処理、表示。このエンコードは 1990 年に開発が開始され、1994 年に正式に発表されました。最新バージョンは 2005 年 3 月 31 日の Unicode 4.1.0 です。

2. 特徴

Unicodeはコンピュータで使われる文字コードです。各言語の各文字に統一された一意のバイナリ エンコーディングを設定し、言語間およびプラットフォーム間のテキスト変換と処理の要件を満たします。

3. エンコード方法

Unicode標準では常に16進数が使用され、書き込み時に先頭に「U+」が付けられます。たとえば、文字「A」のエンコードは004116、文字「?」のエンコードは20AC16です。 。したがって、「A」のエンコードは「U+0041」と記述されます。

4.UTF-8エンコーディング

UTF-8はUnicodeの使用方法の1つです。 UTF は Unicode Translation Format であり、Unicode を特定の形式に変換することを意味します。

UTF-8 は、ネットワークを使用した異なるコンピュータ間での異なる言語およびエンコーディングのテキストの送信を容易にし、シングルバイト処理を処理する既存のシステム上で 2 バイト Unicode を正しく送信できるようにします。

UTF-8 は Unicode 文字を格納するために可変長バイトを使用します。たとえば、ASCII 文字は格納するために引き続き 1 バイトを使用し、アクセント付き文字、ギリシャ文字、またはキリル文字は格納するために 2 バイトを使用しますが、一般的に使用される漢字は 3 バイトを使用します。補助プレーン文字は 4 バイトを使用します。

5.UTF-16 と UTF-32 エンコーディング

UTF-32、UTF-16、UTF-8 は、Unicode 標準エンコーディング文字セットの文字エンコーディング スキームです。UTF-16 は、1 つまたは 2 つの未割り当ての 16 ビット A シーケンスを使用します。コード単位の数は Unicode コード ポイントをエンコードし、UTF-32 は各 Unicode コード ポイントを同じ値の 32 ビット整数として表します。

さまざまなPHPアプリケーションの文字化け問題の解決策

1) タグを使用してページエンコーディングを設定する

このタグの機能は、クライアントのブラウザがページを表示するために使用する文字セットエンコーディングを宣言することです。 - 8 (UTF8 である MySQL とは異なります) など。したがって、ほとんどのページはこのメソッドを使用して、このページを表示するときに使用するエンコーディングをブラウザーに指示し、エンコーディング エラーや文字化けを回避できます。しかし、場合によっては、この文がどの xxx であっても機能しないことがわかります。これについては後で説明します。

これはHTML情報に属し、サーバーがHTML情報をブラウザに渡したことを示すだけの単なるステートメントであることに注意してください。

2) header("content-type:text/html; charset=xxx");

この関数 header() の機能は、括弧内の情報を http ヘッダーに送信することです。括弧内の内容が記事に記載されているとおりであれば、最初のラベルと比較してみると、文字が似ていることがわかります。ただし、違いは、この機能がある場合、ブラウザは常に要求された xxx エンコーディングを使用し、決して従わないことです。そのため、この機能は非常に便利です。なぜこれが起こっているのでしょうか? 次に、http ヘッダーと HTML 情報の違いについて話さなければなりません:

http ヘッダーは、http プロトコルを使用して HTML 情報をブラウザーに送信する前にサーバーによって送信される文字列です。タグはHTML情報に属しているため、header()で送信された内容が最初にブラウザに届きます。人気のポイントは、header()の優先度が高いことです(これを言えるかわかりませんが)。 PHP ページに header("content-type:text/html;charset=xxx") と header("content-type:text/html;charset=xxx") の両方がある場合、ブラウザは前者の http ヘッダーとヘッダーのみを認識します。メタではありません。もちろん、この関数はphpページ内でのみ使用できます。

また、前者は確実に機能するのに、後者は時々機能しないのはなぜでしょうか、という疑問も残ります。これが、次に Apache について話したい理由です。

3) AddDefaultCharset

Apache ルートディレクトリの conf フォルダに、Apache 設定ドキュメント全体 httpd.conf があります。

テキスト エディタを使用して httpd.conf を開きます。708 行目 (バージョンが異なる場合があります) には、AddDefaultCharset xxx (xxx はエンコード名) が含まれています。このコード行の意味: サーバー全体の Web ページ ファイルの http ヘッダーの文字セットをデフォルトの xxx 文字セットに設定します。この行があることは、各ファイルにヘッダー行 ("content-type: text/html; charset=xxx") を追加することと同じです。これで、ブラウザが utf-8 に設定されているにもかかわらず常に gb2312 を使用する理由が理解できました。

Webページにheader("content-type:text/html; charset=xxx")がある場合、デフォルトの文字セットが設定した文字セットに変更されるので、この機能は常に役に立ちます。 AddDefaultCharset xxx の前に「#」を追加し、この文をコメントアウトし、ページに header("content-type...") が含まれていない場合は、メタ タグが有効になります。

上記の優先順位は以下の通りです:

header("content-type:text/html; charset=xxx")

.. AddDefaultCharset xxx

..

Webプログラマの方ならお勧めです各ページにヘッダー ("content-type: text/html; charset=xxx") を追加します。これにより、どのサーバーでも正しく表示され、強力な移植性が確保されます。

4) php.ini の Default_charset 設定:

php.ini の Default_charset = "gb2312" は、php のデフォルトの言語文字セットを定義します。通常、この行をコメント アウトし、必須要件とするのではなく、Web ページ ヘッダーの文字セットに基づいてブラウザが自動的に言語を選択できるようにすることをお勧めします。これにより、複数の言語の Web サービスを同じサーバー上で提供できます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/324269.html技術記事文字セットは複数の文字の集合であり、各文字セットには異なる数の文字が含まれています: ASCII 文字セット、GB2312 文字セット、BIG5 文字セットなど。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。