Unicodeエスケープ変換

テキストを\uXXXX形式のUnicodeエスケープ、10進文字参照、16進文字参照で表します。デコードは選択中の出力形式に関係なく、文中に混在する3種類の対応表記を読み取ります。UTF-8のバイト列を変換するツールではありません。

ブラウザ内でローカルに実行

出力形式を選んでエンコードする

入力欄にテキストを貼り付けて使います。変換はブラウザー内で行い、入力内容をネットワークリクエストで送信しません。ファイルの読み込みや一括処理には対応していません。

  1. Unicodeエスケープ、10進文字参照、16進文字参照のいずれかを選び、「テキストをエンコード」を押します。
  2. 変換済みの表記を読む場合は「変換表記をデコード」を押します。選択中の形式にかかわらず、対応する3種類をまとめて処理します。
  3. 結果をコピーします。入力や形式を変更した場合とエラー時は、古い結果が消え、コピーが無効になります。「クリア」は形式の選択を保ったまま入出力を空にします。結果を続けて変換するには、自分で入力欄へ貼り戻してください。

コードユニットとコードポイントの違い

4桁のエスケープが2つ必要になる理由

Unicode形式では、各UTF-16コードユニットを小文字の\uと必ず4桁の16進数で表します。16進数の英字も小文字で、外側の引用符は付けません。Aは\u0041、Āは\u0100、実際のLF改行は\u000aです。😀はサロゲートペアの\ud83d\ude00になります。

数字の文字参照では、コードポイント全体の値を使います。A你😀は10進でA你😀、16進でA你😀です。16進文字参照の桁数は固定ではなく、16進数の英字は大文字になります。通常の英字やスペースも変換対象です。

文中の対応表記だけを1回置換

認識するのは、小文字の\uに続く4桁の16進数と、末尾にセミコロンがある10進・16進文字参照です。16進文字参照の接頭辞は&#xと&#Xの両方に対応し、16進数の英字は大文字・小文字を区別しません。\u0041你😀はA你😀になります。

\u005cu0041は文字列としての\u0041に、AはAになり、Aまでは変換しません。置換で生じた表記を再度読み取らないためです。JavaScriptやJSON全体の構文解析ではなく、コードも実行しません。結果はHTMLとして描画せず、テキストで表示します。

HTMLの厳密チェックは数字の文字参照のみ

he 1.2.0の厳密なHTMLチェックは、数字の文字参照へのエンコードと、そのデコードに適用されます。Unicodeエスケープには適用されず、NUL、U+0080、U+FFFFもこの形式に変換でき、\uから戻せます。一方、数字の文字参照への変換では拒否されます。どのエンコード形式でも孤立サロゲートは拒否され、デコード後の結果にも孤立サロゲートは許可されません。

\uD83D\uDE00は😀に戻りますが、サロゲート値の数字参照��はエラーです。�、€、�も拒否されます。

Unicode変換のよくある質問

不正に見える表記がそのまま残るのはなぜですか?

未認識の形式は元の文字列を残します。\uZZZZ、\u{41}、\U0041、\n、&、&#xZZ;、セミコロンのない&#65が該当します。65 66のような数値の並びも解釈しません。認識された数字の文字参照は、厳密チェックでエラーになることがあります。

空白や改行も必ず元どおりになりますか?

前後の空白は削除せず、Unicode正規化もしません。空の入力は空の出力になります。ただし、入力欄では実際のCRLF・CR改行がLFになります。また、変換コアはCRを
にできますが、厳密な数字参照のデコードでは
を拒否します。すべての入力について完全な往復変換を保証するものではありません。

最近使ったツール: