エンコード

Unicode Escape

Unicode エスケープシーケンスのエンコード・デコード — 文字を \uXXXX 形式に、またはその逆に変換。

A Unicode escape sequence (\uXXXX) writes a character as its code point instead of the character itself — so a string literal in code can contain any Unicode character while the source file itself stays plain ASCII.

How to use it

Common uses

Things to keep in mind

\uXXXX encodes exactly one 16-bit UTF-16 unit, not one visible character — characters outside the Basic Multilingual Plane (most emoji) need two such sequences together (a surrogate pair).

JSON only requires escaping for control characters and a few special characters — escaping every character as \uXXXX isn't required, though it is valid.

このツールに関する記事: Unicode Escape:\uXXXX形式が意味するもの

よくある質問

Unicode エスケープシーケンスとは何ですか?

\uXXXXの形式で文字のコードポイントを16進数4桁で表す表記法です。JavaScriptやJSON、Javaの文字列リテラルなどで、非ASCII文字をソースコード上でASCIIだけを使って安全に表現するために使われます。

絵文字のような文字が \uXXXX 2つ分になるのはなぜですか?

絵文字などBMP(基本多言語面)外の文字はコードポイントが\uXXXX1つでは表せないため、サロゲートペアと呼ばれる2つの\uXXXXの組み合わせで表現されます。デコード時にはこのペアを正しく1文字として復元する必要があります。

「非 ASCII」と「すべての文字」の違いは何ですか?

「非ASCII」はASCII範囲(英数字や基本記号)を除いた文字だけをエスケープします。「すべての文字」はアルファベットや数字も含め、入力されたすべての文字を\uXXXX形式に変換します。

サロゲートペアを途中で分断するとどうなりますか?

対になるコードのない孤立したコード単位になってしまいます。ほとんどのパーサーは、このような文字列をエラーとして拒否するか、代替文字「�」として表示します。

絵文字1文字を\uXXXX1つだけでエンコードできますか?

いいえ。その絵文字が基本多言語面の外にある場合(現代の絵文字のほとんどがそうです)、常に2つの\uXXXXシーケンスから成るサロゲートペアが必要になります。

記事: エンコード

Base64とは何か、なぜ必要で、どう動くのか

Base64がバイナリデータをASCIIテキストにどう変換するか、実際にいつ必要になるか。

Base32:Base64との違いと、どんな場面で便利か

大文字小文字を区別しないBase32のアルファベットと、Base64より便利な場面。

URL Encode/Decode:リンクにおけるパーセントエンコーディング

アドレスやパラメータ中の特殊文字が%XXの並びに変わる仕組み。

HTML Entities:特殊文字を安全に表示する方法

< > &をエスケープすべき理由と、それがマークアップの破損をどう防ぐか。

JWT:トークンの構造と「デコード」の意味

JWTのheader、payload、signatureと、デコードが署名検証と同じでない理由。

ROT13とシーザー暗号:単純な文字の置き換え

13文字分のシフトがROT13を自己反転にする理由と、今なお使われる理由。

Punycode:国際化ドメイン名がDNSでどう動くか

非ラテン文字を含むドメインがxn--プレフィックス付きのASCII形式にどう変わるか。

モールス符号:テキストが点と線に変わる仕組み

文字を点と線でエンコードする原理と、モールス符号が今どこで使われているか。

Data URI:画像をコードに直接埋め込むべき場面

Data URIがファイルの内容をHTMLやCSSに直接埋め込む仕組みと、それが有効な場面。

Gzip + Base64:テキストとして送るためのデータ圧縮

圧縮されたバイナリデータをテキストフィールドに入れる前にBase64でもエンコードする理由。

XML Entities:XML文書内の文字をエスケープする

これがないと解析時に文書が壊れる、XMLの5つの必須エンティティ。