最近、WebはほとんどUTF-8に向けて標準化されていることを私は知っています。そして、UTF-8を使用することが悪いことになる場所があるかどうか疑問に思っていました。UTF-8、16などはより多くのスペースを使用する可能性があるという議論を聞いたことがありますが、最終的には無視できます。
また、Windowsプログラム、Linuxシェル、およびその性質のものについてはどうでしょうか。そこでUTF-8を安全に使用できますか?
最近、WebはほとんどUTF-8に向けて標準化されていることを私は知っています。そして、UTF-8を使用することが悪いことになる場所があるかどうか疑問に思っていました。UTF-8、16などはより多くのスペースを使用する可能性があるという議論を聞いたことがありますが、最終的には無視できます。
また、Windowsプログラム、Linuxシェル、およびその性質のものについてはどうでしょうか。そこでUTF-8を安全に使用できますか?
非常に高速である必要があり、エキゾチックな文字が必要ないことが確実なプログラム(文字列操作を実行する)を作成する必要がある場合は、UTF-8が最善のアイデアではない可能性があります。他のすべての状況では、UTF-8が標準である必要があります。
UTF-8は、Windowsを含め、ほとんどすべての最近のソフトウェアでうまく機能します。
UTF-32が使用可能な場合は、他のバージョンよりも処理を優先してください。
プラットフォームがUTF-32/UCS-4 Unicodeをネイティブにサポートしている場合、「圧縮」バージョンのUTF-8およびUTF-16は、文字(文字シーケンス)ごとにさまざまなバイト数を使用するため、速度が低下する可能性があります。インデックスによる文字列の直接ルックアップを実行しますが、UTF-32は各文字に32ビットの「フラット」を使用するため、一部の文字列操作が大幅に高速化されます。
もちろん、組み込みシステムなどの非常に制限された環境でプログラミングしていて、ASCIIまたはISO 8859-x文字しか存在しないことが確実な場合は、効率と速度のためにこれらの文字セットを選択できます。ただし、一般的には、Unicode変換形式を使用してください。
utf-8がファイルストレージとネットワークトランスポートに最適に機能することはよく知られています。しかし、人々はutf-16/32が処理に適しているかどうかを議論しています。主要な議論の1つは、utf-16は依然として可変長であり、utf-32でさえ文字ごとに1つのコードポイントではないということです。それでは、utf-8よりも優れているのでしょうか。私の意見では、utf-16は非常に良い妥協点です。
まず、utf-16でダブルコードポイントを必要とするBMP以外の文字は、非常にまれにしか使用されません。その範囲の漢字(他のいくつかのアジアの文字も)は基本的に死んだものです。専門家が古代の本をデジタル化するためにそれらを使用する場合を除いて、一般の人々はそれらをまったく使用しません。したがって、utf-32はほとんどの場合無駄になります。これらの文字についてはあまり心配しないでください。ソフトウェアがこれらの特別なユーザー向けでない限り、適切に処理しなくてもソフトウェアの見栄えが悪くなることはありません。
次に、文字列のメモリ割り当てを文字数に関連付ける必要があることがよくあります。たとえば、10文字のデータベース文字列列(Unicode文字列を正規化された形式で格納すると仮定)。utf-16の場合は20バイトになります。ほとんどの場合、それはそのように機能しますが、極端な場合を除いて、5〜8文字しか保持されません。ただし、utf-8の場合、1文字の一般的なバイト長は西洋言語では1〜3、アジア言語では3〜5です。つまり、一般的なケースでも10〜50バイトが必要です。より多くのデータ、より多くの処理。