アプリケーション開発者である私はUnicodeを知る必要がありますか?
7 に答える
Unicodeは、書面による通信で使用されるグリフの数値コードを定義する標準です。または、彼ら自身が言うように:
世界のすべての言語の記述に使用される文字のデジタル表現の標準。Unicodeは、任意の言語のテキストを保存、検索、および交換するための統一された手段を提供します。これは、最新のすべてのコンピューターで使用されており、インターネット上でテキストを処理するための基盤です。Unicodeは、Unicodeコンソーシアムによって開発および保守されています。
Unicodeとそのエンコーディングについて自分自身を教育することを気にしない開発者によって犯された、多くの一般的でありながら簡単に回避できるプログラミングエラーがあります。
- まず、信頼できる詳細情報と実装ガイドラインのソースにアクセスします。
- 他の人が述べたように、ジョエル・スポルスキーはこれらのエラーの良いリストを持っています。
- エリオット・ラスティ・ハロルドのユニコードの十戒も好き です。
- 開発者は、正規表現攻撃にも注意する必要があり ます。
知っておくべき重要な概念のいくつかは次のとおりです。
別のリンクを追加するだけのリスクがありますが、unicode.orgは素晴らしいリソースです。
要するに、これは、文字通り、人間がこれまでに使用したすべての文字を処理するように設計されたASCIIの代替品です。Unicodeには、これらすべての文字を処理するためのさまざまなエンコードスキームがあります。UTF-8は、最近では多かれ少なかれ標準であり、文字ごとに1バイトを維持するのに非常に役立ち、最初の7ビットはASCIIと同じです。
(補遺として、プログラマーの間では、国際化を行う場合にのみUnicodeについて知っておく必要があるという誤解があります。これは確かに1つの用途ですが、それだけではありません。たとえば、私は英語のテキストのみを使用するプロジェクトですが、膨大な数の派手な数学記号を使用します。プロジェクト全体を完全にUnicodeに移行すると、数え切れないほど多くの問題が解決しました。)
Unicodeは、世界の文字システムを表現する能力を持つテキストを一貫して表現するための業界で合意された標準です。グローバリゼーションはますます懸念されているため、すべての開発者はそれについて知る必要があります。
Unicode を処理するための (オープンな) コード ソースの 1 つは、ICU - Internationalization Components for Unicode です。これには、Java 用の ICU4J と、C および C++ 用の ICU4C が含まれています (C インターフェイスを提供し、C++ コンパイラを使用します)。
Unicodeは文字セットであり、ASCII(英語の文字のみを含む127文字、実際には印刷不可能な制御文字の3分の1)には、既知のすべての言語(中国語、ロシア語、ギリシャ語、アラビア語など)およびおそらく聞いたことのないいくつかの言語(多くの死語の記号はもう使用されていませんが、古代の文書をアーカイブするのに役立ちます)。
したがって、数十の異なる文字エンコーディングを処理する代わりに、それらすべてに対して1つのエンコーディングがあります(これにより、エンコーディングをどこかで切り替える必要がないため、1つのテキスト文字列内で異なる言語の文字を簡単に混在させることができます。テキスト文字列の真ん中)。実際にはまだ十分な余地があり、2つのmioキャラクターすべてを使用することはできません。ユニコードコンソーシアムは、シンボルスペースが不足することを恐れることなく、別の100言語のシンボルを簡単に追加できます。
今日の図書館で見つけることができるあらゆる言語のほとんどすべての本は、Unicodeで表現することができます。Unicodeはエンコーディング自体の名前であり、「バイト」としてどのように表現されるかは別の問題です。UTF-8のようなUnicode文字を作成する方法はいくつかあります(文字番号に応じて、1〜6バイトは単一の文字を表し、英語はほとんどの場合1バイト、他のローマ言語は2〜3、中国語/日本語はそれ以上の場合があります) 、UTF-16(ほとんどの文字は2バイト、まれに使用される文字は4バイト)およびUTF-32、すべての文字は4バイトです。他にもありますが、これらが支配的なものです。
Unicodeは、多くの新しいOS(Mac OS XではほとんどすべてがUnicodeです)およびプログラミング言語(JavaはデフォルトのエンコーディングとしてUnicodeを使用します。通常はUTF-16です。Pythonも同様にUTFを使用するか、すでに使用していると聞きました。 32)。プレーンな英語のテキスト以外のものを表示、保存、または処理するアプリを作成する予定がある場合は、Unicodeに慣れるのが早ければ早いほどよいでしょう。
それを使用するためにユニコードを学ぶ必要はありません。それは非常に複雑な規範です。主な問題と、プログラミングツールがそれをどのように処理するかを知る必要があるだけです. それを知るには、Galwegian のリンクと、プログラミング言語と IDE のドキュメントを確認してください。
例:
任意の文字を latin-1 から unicode に変換できますが、すべての文字に対して他の方法で機能するわけではありません。PHP では、一部の関数 (stristr など) が Unicode で動作しないことがあります。Python は Unicode 文字列を次のように宣言します: u"Hello World".
それはあなたが知らなければならない種類の薄いものです。
ユニコードを使用しない正当な理由がない場合は、それを使用してください。
Unicodeは、文字を列挙し、それらに一意の数値ID(「コードポイント」と呼ばれる)を与える標準です。これには、ほとんどの現代の書記言語用の非常に大きく成長している文字のセットと、古代ギリシャ語の記譜法のような多くのエキゾチックなものが含まれています。
他の文字エンコード方式(ASCIIやISO-8859標準など)とは異なり、Unicodeはこれらの文字をバイト単位で表すことについては何も述べていません。キャラクターに普遍的なIDのセットを与えるだけです。したがって、Unicodeが「ASCIIの16ビット置換」であると言うのは誤りです。
UTF-8、UTF-16など、任意のUnicode文字をバイト単位で表すことができるさまざまなエンコード方式があります。