コンピューター ウィンドウズ インターネット

Unicodeコーディング標準は、各文字に割り当てます。 Unicodeとは

Unicodeは、プラットフォーム、プログラム、言語に関係なく、任意の文字に一意のコードを割り当てるコーディングシステムです。

実際、このノートのタイトルそのものにさえ、いくらかの不正確さ、あるいはむしろ矛盾があります。 事実は、ロシア語の文字で英語の単語Unicodeを正しく綴る方法(UnicodeまたはUnicode)にまだ全会一致がないということです。 ここで、最初のスペルオプションを使用します。

ポーランド語の文字の代わりにドキュメントを開いたりページを表示したりすると、いくつかの「茂み」が発生することがあります。 これらのエラーは、誤った文字エンコードが原因である可能性があります。 画面に表示されるテキストは、コンピューターによって0と1の形式で保存され、8つの部分にパックされます。 1つのゼロまたは1ビット。 8つのグループは1バイトです。 電子機器は、テキストを含む情報をバイト単位で保存します。

さて、しかし、これらすべてのコンピューターはどのようにして歴史を作ることができるのでしょうか? 10は次のようになります。このように、数字を書くために2進数と呼び、10進数を使用することを学びました。 これは、各文字に番号が割り当てられるようにするために行われます。 「アラは猫を飼っている」という文は数字のセットです。

Unicodeは、多くの人が考えるように、多くの文字を表すための単なるマルチバイトエンコーディングではありませんが、そのような定義はある程度正しいと見なすことができます。 正式には、定義は次のとおりです。Unicodeは、プラットフォーム、プログラム、言語に関係なく、任意の文字に一意のコードを割り当てるコーディングシステムです。

大文字と小文字はコンピューターの別個の文字であり、空白も表示されませんが記号であることに注意してください。 さらに、個々の数字は同じように扱われます。 たとえば、文字1には番号1だけが割り当てられていません。

いいえ、しかしコンピュータはどの文字が割り当てられているかをどこで知っていますか この番号? 答えは文字エンコードです。 一般的には、すべての記号と数字が割り当てられたテーブルです。 時間が経つにつれて、この数はもはや十分ではありません-コンピュータは新しい機能を獲得し、特別な文字で他の国でより人気があります。

Unicode標準は2つの部分に分かれています。 1つ目は、サポートされている各アルファベットの各文字に対応する一連の数字です。 これは、ユニバーサル文字集合、または単にUCSと呼ばれます。 UCSコードスペースで使用される数値はすべて整数であり、負ではありません。 これらの番号(コード位置)は、U + 0000、U + 0001、U +0002などとして指定されます。 これらすべてにより、コードスペースは均一ではありませんが、いくつかのセマンティック領域に分割されます。 U +0000からU + 007FまでのコードはASCII文字であり、その後にさまざまな国別アルファベットの文字、句読点、および改行などの技術文字が続きます。 標準の2番目の部分は、実際には、テキスト内の各コードのビット単位の表現を提供するエンコーディングです。

どちらも250文字を超えていますが、この数ではまだすべての言語で機能するには不十分であるため、各言語族には独自のバージョンのこれらのエンコーディングがあります。 これはコードページと呼ばれます。 それらはすべて同じ起源を持っていたので、句読点、大文字と小文字の英字、および数字が含まれていました。 ただし、残りの文字はバージョンごとに異なります。

しかし、コードページの導入でさえ、すべての問題を解決したわけではありません。 1つは、標準の相互運用性です。 最初の127文字はすべての標準で同じですが、残りの文字は独自の表現に従って順序付けられています。 この最初のコーナーに書かれている単語コーナーは、システムが2番目の標準のために開かれた後に開かれます。

すべてのUnicode文字は、拡張と幅なし(変更)の2つのタイプに分けられます。 拡張文字は、このメモが入力される通常の文字です。 変更するものは、アクセント、ドット、「キャップ」などの文字の上にあります。 すべてのアルファベットで同様の記号が付いた文字のほとんどは、拡張記号と変更記号のシーケンスとして表示されます。 確かに、キリル文字の「e」と「y」は別々の拡張文字として表示されます。

もう1つの問題は、256文字ではまだドキュメントを流暢に書くのに十分ではないということです。 ほとんどの場合、これで十分ですが、修士論文についてMöller、Pütz、またはStrassmannを参照する必要がある場合に問題が発生します。 キリル文字を挿入するか、 ギリシャ文字複雑な数式に変換します。

世界のすべての言語で使用される可能性のあるすべての文字を含む新しいコーディング方法が必要です。 これにより、間違いが少なくなります。 ただし、別の問題が発生しました。考えられる文字の多くが、1バイトの書き込みを許可していませんでした。 1バイトは8個またはゼロで構成されているため、さまざまな方法で編成できます。 非常に多くの文字にコードページがあります。 エンコーディングシステムでサポートされる文字数を増やすには、文字を挿入するために必要なバイト数を増やす必要があります。

Unicodeの最も一般的な実用的な実装はUTF-8です。 この標準は、英語のアルファベットの文字やその他の一般的な文字(つまり、0〜127のASCIIコードを持つ文字)が1バイトで書き込まれるため、古いASCIIテキストとの良好な互換性を提供します。 残りの文字は、2〜6バイトの多数のバイトで書き込まれます。

最近、トルコリラ文字がUnicode文字に追加されました。 割り当てられた数は110です。各文字が3バイトで占められている場合、最初から1バイトであっても、ファイルをディスクに保存するために必要なスペースが増加します。

開発者は、文字のバイト数を一定にすべきではないという考えを思いつきました。 そしてこのために、コンピュータで動作するために、それらはエンコーディングに対応します。 これら3つのそれぞれの文字エンコードを変更し、すべての文字が表示されるかどうかを確認します。 この方法でページをエンコードする必要がある場合は、無料でより強力なメモ帳をダウンロードしてください。

Unicodeおよび関連する標準は、Unicodeコンソーシアムによって開発されています。 この組織の公式ウェブサイトwww.unicode.orgに書かれているように、「Unicodeコンソーシアムは、最新のソフトウェア製品および標準におけるテキスト情報の表現を定義するUnicode標準を開発および開発するために設立された非営利組織です。会員コンソーシアムは、情報処理やコンピューター産業の分野で活動する多数の企業や組織です。コンソーシアムの財政的支援は、会員の会費のみで行われます。 Unicodeコンソーシアムは、Unicode標準をサポートし、それと実装の普及を支援したいと考えているすべての組織または個人に開かれています。 参加しませんか! :)

この記事の説明はベータ8に基づいており、ベータテスターの小さなサークルのみが利用できます。 ベータテストが終わりに近づくにつれて、説明されている機能のほとんどが実際に最終リリースに表示される可能性が非常に高くなります。 各テーマブロックで、現在のバージョン51に関する最も重要な変更とニュースを取り上げます。

ファイルの操作とアプリケーションの外観

新しい6番目のバージョンは、ワークスペースのこの編成では何も変更しませんが、これら2つのウィンドウの機能を大幅に拡張します。 方法を尋ねると、答えは「ブックマーク」されています。 各ウィンドウで、定義したフォルダをすばやく切り替えることができるようになりました。 ブックマークはいくつでも作成でき、1つのウィンドウでさまざまなフォルダをすばやく切り替えることができます。 ブックマークの操作を続行できます。 各タブは個別のファイルパネルのように動作するため、古い方法で操作できます。

Unicode標準(ISO / IEC 10646)は、国際標準化機構(ISO)と主要なコンピューターメーカーとのコラボレーションの結果です。 ソフトウェア..。 前のページで述べた理由により、彼らは根本的に新しい質問の定式化につながりました。すべての国語に対して単一のテーブルを作成できるのに、なぜ個別のコードテーブルの開発に努力を費やすのでしょうか。 そのような仕事は非常に野心的なように見えますが、一見しただけです。 事実、6,700の生きている言語のうち、約50が州の公用語であり、約25の異なるスクリプトを使用しています。私たちのコンピューター時代の数字はかなり予見可能です。

ブックマークは、ウィンドウ内にある場合にのみ表示されます。 少なくとも 2。 長期間持続する大量のデータをコピーする場合、以前のリリースではバックグラウンドコピーが使用される場合があります。 もちろん、この人気のある機能は保持されており、新しいバージョンでいくつかの新しいリリースがもたらされています。

これを選択すると、拡張バックグラウンドコピーダイアログが表示され、コピーを一時停止して、コピーされる最大ビットレートを設定できます。 さらに、ファイルをこのウィンドウに継続的に追加できます。 このモードは、実行時に複数のウィンドウで集中的に対処している一部のユーザーの問題を「処理」します-彼らはインストールできます 最大速度キュー内でファイルを順番に転送およびソートして、全体的なディスク負荷を大幅に削減します。

予備的な見積もりでは、これらすべてのスクリプトをエンコードするには16ビットの範囲で十分であることが示されました。つまり、0000からFFFFの範囲です。 各スクリプトには、この範囲内の独自のブロックが割り当てられ、このブロックには、このスクリプトの文字のコードが徐々に追加されていきました。 今日、すべての生きている公式スクリプトのコーディングは完全であると見なすことができます。

これで、フォルダを作成する機能でディレクトリ構造を作成することもできます。 ファイルを操作する際の追加の改善。 ディレクトリ同期には2つの大きな改善があります。 メインの名前変更モジュールに、設定を保存するためのオプションと視覚的な上書きファイルを作成するためのツールが追加されました。

クライアントは、中断された接続を継続的に検出することもでき、起動時に自動的に再接続することができます。 その他の新機能には、新しいタイプのプロキシサーバーのサポート、サブスクリプション名の禁止文字の自動置換、および[設定]ダイアログボックスでの新しい接続の構成が含まれます。

書記体系を分析および説明するための十分に開発された方法論により、ユニコードコンソーシアムは最近、関心のある地球の残りのスクリプトのコーディングに移行することができました。 、人工的に作成されたアルファベットなど。すべてを表すには、この豊富な16ビットコーディングではもはや十分ではありません。現在、Unicodeは21ビットコードスペース(000000〜10FFFF)を使用しており、プレーンと呼ばれる16のゾーンに分割されています。 これまでのところ、Unicodeプランには次のプレーンが含まれています。

以前のバージョンで作成されたオプションでは、元の構成ダイアログが不明確になりました。 新しい構成ダイアログは、より読みやすいカテゴリに分割されており、各セクションは専用です。 別ページダイアログ。 あなたはから知られているパラメータのほとんどを見つけるでしょう 前のバージョン、および多くの新しいオプション。

ワールドクラスの文字エンコードです。 世界のすべての言語の特殊文字の大部分はすでに配置されています。 「正規表現」の呪文-多くの人が恐れています。 彼がしなければならないのは彼の公式の紹介を見ることだけです。 2バイト文字は、多言語の2バイト文字コードです。 世界中のコンピューターを使用するときに使用される記号のほとんど(技術記号や 特別な記号、2バイト文字としてのUnicode文字として表すことができます。

    平面0(コード000000-00FFFF)-BMP、基本多言語面(BMP、基本多言語面)は、元のUnicode範囲に対応します。

    プレーン1(コード010000-01FFFF)-DMP、補足多言語プレーン(SMP)、デッドスクリプトを対象としています。

    平面2(コード020000-02FFFF)-BMPに含まれていなかった象形文字を対象とした、追加の象形文字平面(SIP、補足表意文字平面)であるDIP。

    各2バイト文字は固定の16ビットサイズで表されるため、文字幅により、国際文字セットを使用したプログラミングが簡素化されます。 通常、文字幅はマルチバイト文字よりも多くのメモリスペースを占有しますが、処理は高速です。

    それが通常の文字列である場合、彼女は言うでしょう、それがUnicode文字列である場合、彼女は言うでしょう。 まず、ターミナルウィンドウは通常、限られた言語セットの文字のみを表示するように構成されています。 Unicode文字列に対して印刷命令を発行すると、ターミナルウィンドウに正しく表示されない場合があります。 ここで、各Unicode文字は、ファイルに保存するために1つ以上の「バイト」としてエンコードする必要があります。

    プレーン14(コード0E0000-0EFFFF)は、特殊用途のキャラクターを対象としたチップボード、追加の特殊平面(SSP、補助特殊用途平面)です。

    平面15(コード0F0000-0FFFFF)-私用平面。人工的な書き込みの記号を対象としています。

    平面16(コード100000-10FFFF)-私用平面。人工的な書き込みの記号を対象としています。

    これまで、低レベルのデータエンコーディングデータは避けてきましたが、ビットとバイトについて少し理解しておくと、それを理解するのに役立ちます。 これは唯一の値であり、2つの可能性によって制限されます。これは、従来は0と表記するか、コンピューターはビットを電荷または磁気極性として保存するか、その他の方法でわざわざする必要はありません。 8つの0-1ビットのシーケンスはバイトと呼ばれます。

    多くの可能なエンコーディングがあります。 1つのUnicode文字は、最大4バイトのシーケンスにマップされます。 これは、2つの方法のいずれかで実行できます。 コンテンツを印刷またはファイルに書き込もうとするまで、すべてが正常に機能します。 入力していて、ターミナルウィンドウがその言語を表示するように構成されていない場合は、奇妙な出力を提供している可能性があります。

BMPのブロックへの内訳は、WDH:UnicodeStandardに記載されています。 ここでは、最初の128コード(00000〜0007F)がASCIIコードに対応し、ベースラテンブロックをエンコードしていることに注意してください。 Unicode範囲のスクリプトのレイアウトについては、私の記事「Unicodeと世界のスクリプト」で詳しく説明します。 将来的にはBMPシンボルのみに関心があるため、XXXX形式の16ビットコードを使用します(最上位ビットはゼロに等しく、示されていません)。

ファイルに書き込もうとすると、エラーメッセージが表示される場合があります。 これにより、たとえばループとポーランド語のアルファベットなど、1つのドキュメントに書き込むことができます。 これは、これまでで最も用途の広い標準です。 もちろん、それらはすべて同じ配列を使用し、同じ機能を持っています。唯一の違いは、書き方が異なることです。 最大の移植性はUnicodeドキュメントです。 すべてのパーサーはそれをサポートする必要があります。 1つの規格の保証はありません。

これを使用する場合、エンコーディング情報は必要ありません。 文字のエンコードと変換に役立つプログラムに関する情報は、「ツール」セクションにあります。 このチュートリアルでは、ルーマニア語に固有の大文字と小文字の両方を含むフォントと発音区別符号を追加するために実行する必要のある手順のみを示します。 発音区別符号なしで書くと、「12歳の戦車」、「ローマで生まれた小説」などのあいまいな表現につながる可能性があります。

概要

Unicodeは、文字の概念に基づいています。 記号は、特定の書記体系に存在し、その画像(書記素)によって実現される抽象的な概念です。 これは、各文字が与えられることを意味します 一意のコード特定のUnicodeブロックに属しています。 たとえば、英語、ロシア語、ギリシャ語のアルファベットの書記素Aがあります。 ただし、Unicodeでは、「ラテン大文字A」(コード0041)、「キリル大文字A」(コード0410)、および「ギリシャ大文字ALPHA」(コード0391)の3つの異なる文字に対応します。 これらの文字に小文字への変換を適用すると、それぞれ「ラテン小文字A」(コード0061、書記素a)、「キリル小文字A」(コード0430、書記素a)、および「ギリシャ小文字」が得られます。 ALPHA "(コード03B1、書記素α)、つまり異なる書記素。

発音区別符号は帽子です-そのために-封筒、コンマ、コンマ-ルーマニア人のための言語。 これは、任意の言語、任意のハードウェアまたはソフトウェアプラットフォームの任意の文字に対して、その一意で明確な番号と一致するように設計されています。 これで、グリフの形状とサイズになります。

カンマグラフィックを選択します。 グリフの赤い輪郭は、それが選択されていることを意味します。 他のルーマニア語の発音区別符号についても、同じ適応が行われます。 [フォント情報]ダイアログボックスが表示されます。 [名前]フィールドに、フォントに付ける名前を追加します。

疑問が生じる可能性があります:小文字への変換は何ですか? ここで、標準の中で最も興味深く重要なポイントに到達します。 重要なのは、Unicodeは簡単ではないということです コードテーブル..。 抽象記号の概念により、Unicodeの作成者は、各文字が固有のコード(データベースキー)、フルネーム、および一連のプロパティによって記述される文字データベースを構築できました。 たとえば、コード0410のシンボルは、このデータベースで次のように記述されています。

0410;キリル文字大文字A; Lu; 0; L ;;;;; N ;;;; 0430;

このエントリを解読してみましょう。 これは、コード0410が「キリル文字」に割り当てられていることを意味します。 大文字А "(シンボルのフルネーム)。次のプロパティがあります。

一般カテゴリ小文字(Lu =文字、大文字)
組み合わせクラス0
出力方向左から右(L)
シンボル分解番号
10進数番号
番号番号
数値番号
ミラーシンボル行方不明(N)
Unicode1.0でのフルネームまた
コメント番号
大文字のマッピング番号
小文字で表示0430
タイトルレターへのマッピング番号

リストされているプロパティは、Unicode文字ごとに定義されています。 これにより、開発者は、シンボルのプロパティに基づいて、レンダリング、並べ替え、大文字/小文字への変換のルールを決定する標準アルゴリズムを作成できました。

要約すると、Unicode標準は3つの相互に関連する部分で構成されていると言えます。

    シンボルデータベース;

    これらの記号の視覚的表現を決定する書記素(グリフ)のベース。

    シンボルを操作するためのルールを決定する一連のアルゴリズム。

このセクションの結論として、キリル文字ブロック(コード0400-04FF)の書記素を示します。 現代のキリル文字(ロシア語、ウクライナ語、ベラルーシ語、ブルガリア語、セルビア語、マケドニア語など)の文字だけでなく、教会のスラブ文字で使用されている元のキリル文字のすべての文字も含まれていることに注意してください。

変換フォーマット

これまで見てきたように、各Unicode文字には固有の21ビットコードポイントがあります。 ただし、実際の実装では、このような文字エンコードは不便です。 事実は、オペレーティングシステムと ネットワークプロトコル従来、データはバイトのストリームとして扱われていました。 これにより、少なくとも2つの問題が発生します。

    ワード内のバイトの順序は、プロセッサごとに異なります。 Intelプロセッサ、DECなどのプロセッサは最上位バイトをマシンワードの最初のバイトに格納し、Motorola、Sparcなどのプロセッサは最下位バイトを格納します。 これらはそれぞれリトルエンディアンとビッグエンディアンと呼ばれます(これらの用語は、Swiftの「スパイク」と「ブラント」に由来し、どちらの端から卵を割るかについて議論しています)。

    多くのバイト指向のシステムおよびプロトコルは、特定の範囲のバイトのみをデータとして許可します。 残りのバイトはオーバーヘッドと見なされます。 特に、行末文字としてヌルバイトを使用するのが通例です。 Unicodeは文字を連続してエンコードするため、そのコードをバイト文字列として直接送信すると、データ転送プロトコルの規則と競合する可能性があります。

これらの問題を克服するために、標準には3つの変換形式UTF-8、UTF-16、およびUTF-32が含まれています。これらは、Unicode文字をそれぞれバイト文字列、16ビットワードペア、および32ビットワードとしてエンコードするためのルールを定義します。 使用する形式の選択は、コンピューティングシステムのアーキテクチャとデータストレージおよび伝送規格によって異なります。 変換形式の簡単な説明は、WDH:UnicodeStandardにあります。

実装上の問題

上からでも 簡単な説明 Unicode標準メジャーからの完全なサポートは明らかです オペレーティングシステムワードプロセッシングに革命を起こすでしょう。 任意のWeb端末に座っているユーザーは、任意のキーボードレイアウトを選択し、任意の言語でテキストを入力して、このテキストを正しく表示する任意のコンピューターに送信できます。 データベースは、レポートに保存、正しく並べ替え、表示できるようになります テキスト情報再び任意の言語で。 この楽園が来るためには、5つのことが必要です。

    オペレーティングシステムは、テキスト文字列の入力、保存、および表示のレベルでUnicode変換形式をサポートする必要があります。

    Unicodeブロックに文字を入力し、それらのコードをオペレーティングシステムに渡すことができるスマートキーボードドライバーが必要です。

    テキストエディタは、すべてのUnicode文字の表示をサポートし、それらに対して共通の文字操作セットを実行する必要があります。

    テキストフィールドとメモフィールドについても、DBMSが同じことを正しく行う必要があります。

    国別エンコーディングは長い間Unicodeと共存するため、それらの間のテキスト変換をサポートする必要があります。

残念ながら、10年間(Unicode 1.0は1991年に登場)、この方向で行われたことは私たちが望んでいたよりもはるかに少ないことを認めなければなりません。 システムレベルでUnicodeを最も一貫してサポートしているWindowsでさえ、その歴史的な発展だけのために、完全に不合理な制限に満ちています。 Unicodeサポートがカーネルから特定のアプリケーションに移植されているため、Unixでは状況はさらに悪化します。 間違いなく、Unicodeは、WebブラウザとJava仮想マシンの2つの環境で今日最も強力にサポートされています。 どちらの環境も元々システムに依存しないように設計されていたため、これは驚くべきことではありません。

Unicodeをサポートする際の客観的な問題にも注意する必要があります。 たとえば、システムに適切なフォントをインストールする必要がある書記素の表示のみに焦点を当てます。 問題は、すべてのUnicode書記素を含むフォントのサイズが完全に扱いにくいことです。 たとえば、Unicode文字の大部分を含むTrueTypeフォントのArial Unicode MSは、24MBの「重さ」です。 Unicodeが新しいブロックでいっぱいになると、そのようなフォントのサイズは100MBに近づきます。 この状況から抜け出す方法は、Microsoftが提案したオンデマンドのシンボル読み込みであり、ブラウザで受け入れられます。 インターネットエクスプローラ..。 ただし、Unicodeフォントの形成に関する規則に関する基準は黙っています。

一緒に働く方法 Unicode文字最も重要な環境とプログラミングシステムでの国内エンコーディングについては、次の記事で説明します。

そのようなページはありません

彼女はそうだったかもしれない。 いつか。 ついさっき。 または計画でのみ。 しかし今、彼女は去っています。