プログラミング言語別Unicodeエスケープシーケンス

JavaScript、Python、Java、Go、Rustなど各言語における\uXXXX、\u{XXXXX}、\UXXXXXXXX、\N{name}形式のUnicodeエスケープシーケンス完全ガイド。サロゲートペアと絵文字のエンコーディングも解説します。

Advanced Patterns

詳細な説明

Unicodeエスケープシーケンス

Unicodeエスケープシーケンスにより、コードポイント番号を使用してソースコード内に任意のUnicode文字を埋め込むことができます。言語によって構文は異なりますが、概念は同じです:数値による文字の識別で文字を表現します。

一般的な形式

\\uXXXX        → BMP文字(16進4桁)
                  使用言語: JavaScript, Java, C#, JSON
\\u{XXXXX}     → 任意のコードポイント(16進1-6桁)
                  使用言語: JavaScript (ES6+), Rust, Swift
\\UXXXXXXXX    → 任意のコードポイント(16進8桁)
                  使用言語: Python, Go, C/C++
\\xHH          → 1バイト(16進2桁)
                  使用言語: JavaScript, Python, C, PHP
\\N{NAME}      → Unicode名による文字指定
                  使用言語: Pythonのみ

基本多言語面(BMP)

BMP(U+0000からU+FFFF)の文字にはほとんどの一般的な文字体系が含まれ、単一の \\uXXXX エスケープで表現できます。

補助文字とサロゲートペア

U+FFFFを超える文字(絵文字、歴史的文字体系、数学記号)は、\\uXXXX に限定された言語では特別な処理が必要です。サロゲートペアはUTF-16エンコーディングで定義された特定の公式からコードポイントを計算して求めます。

言語固有の例

Python: \\uXXXX(BMP)、\\UXXXXXXXX(補助)、\\N{SNOWMAN}(名前指定)。

Go: \\uXXXX(BMP)、\\UXXXXXXXX(補助)。

Rust: \\u{XX} 形式のみ。固定幅の \\xHH\\uXXXX はRust文字列にはありません。

Unicodeエスケープの使用場面

  • 印刷不可能な文字: 制御文字、ゼロ幅スペース、方向マーク。
  • ソースエンコーディングの安全性: ファイルエンコーディングに関係なくコードが動作することを保証。
  • ホモグリフ攻撃の防止: ソース内で似た文字を可視化。
  • JSON互換性: JSONは \\uXXXX のみサポートし、補助文字にはサロゲートペアが必要。

ユースケース

Unicodeエスケープは、国際化対応、APIやデータベースでの絵文字処理、ソースコードでの数学・科学記法の操作、言語学習アプリケーションの構築、テキスト処理ツールの構築、デフォルトエンコーディングが異なるシステム間でのソースファイルのポータビリティ確保、データパイプラインでのエンコーディング問題のデバッグに使用されます。

試してみる — String Escape/Unescape

フルツールを開く