Unicode エンコード/デコード

テキストを様々なUnicode形式に変換、またはUnicodeをテキストに復元します。

ユニコードエンコード
テキストをユニコードエスケープシーケンスに変換
長さ: 0 文字コードポイント: 0サイズ: 0 バイト

ユニコードとは?

ユニコードは、すべての文字に固有のコードポイントを割り当てる普遍的な文字エンコーディング標準です。これにより、コンピュータは世界のほとんどの書記体系でテキストを一貫して表現し、操作できるようになります。

ユニコードは、150以上の現代および歴史的な文字体系、シンボル、絵文字、その他の表記法を含む140,000以上の文字をサポートしています。ユニコードエスケープシーケンスは、これらの文字をプログラミング言語やデータ形式で表現する方法です。

ユニコードエンコード/デコードの一般的な用途

  • 国際化(i18n):ソフトウェアがあらゆる言語のテキストで動作することを保証します。
  • データ処理:様々なプログラミング環境で特殊文字を含むテキストデータを処理します。
  • セキュリティ:インジェクション攻撃を防ぐため、または安全にデータベースにテキストを保存するために特殊文字をエンコードします。
  • デバッグ:テキストデータ内の見えない文字や紛らわしい文字を識別します。

ユニコードの仕組み

ユニコードは各文字に数値であるコードポイントを割り当てます。これらのコードポイントは通常、16進数形式で「U+」を前に付けて表記されます。例えば、文字「A」のコードポイントはU+0041です。

ユニコードエンコーディング形式:

UTF-8:可変長エンコーディング(文字あたり1〜4バイト)。ASCII文字は1バイトのみを使用するため、ASCIIテキストに効率的です。

UTF-16:文字あたり2または4バイトを使用。多くのプログラミング環境(JavaScript、Java、.NET)で一般的です。

UTF-32:文字あたり固定4バイト。処理はより単純ですが、より多くのストレージを使用します。

デコードプロセス:

デコード時、ソフトウェアはエンコードされたバイトを読み取り、対応するユニコードコードポイントにマッピングし、適切な文字を表示します。

ユニコードエスケープシーケンスの形式

プログラミング言語によってユニコードエスケープシーケンスの形式が異なります:

JavaScript:BMP文字には\u0041、その他には\u{1F600}

Python:BMPには\u0041、その他には\U0001F600

C#:BMPには\u0041、その他にはサロゲートペアを使用

ユニコード例の分析

異なる文字がユニコードでどのように表現されるかを見てみましょう:

文字例:

H = U+0048
i = U+0069

ユニコードコードポイント:

U+0048 U+0069

UTF-8表現(バイト):

48 69

UTF-16表現(バイト):

00 48 00 69

ユニコードエスケープシーケンス:

\u0048\u0069

ユニコード使用時のよくある間違い

  • エンコーディング形式の混乱:UTF-8、UTF-16、UTF-32を混同したり、エンコーディング形式を明示的に指定しなかったりする。
  • バイトオーダーマーク(BOM)の問題:ユニコードテキストファイルを処理する際にBOMを正しく処理しない。
  • 文字列長の誤算:1文字が1コードユニットまたは1バイトと等しいと仮定する。
  • 正規化の問題:ユニコードテキストを正規化しないと比較問題が発生する可能性がある(例:éは複数の方法で表現できる)。
  • サロゲートペアの処理:UTF-16でエンコードされたテキストでサロゲートペアを誤って分割する。