テキストと文中の文字参照を変換する

入力欄に直接貼り付けて使います。変換はブラウザー内で行い、入力内容をネットワーク要求で送信しません。ファイル入力や一括処理には対応していません。

  1. 元のテキストをエンコードするか、文字参照を含むテキストをデコードするか選び、対応する操作を実行します。
  2. プレーンテキストの結果を確認し、コピーします。入力の編集や変換エラーが発生すると前の結果が消え、コピーできなくなります。
  3. 別の変換を行うには、結果を自分で入力欄に貼り付けます。クリアすると入力と出力を消去できます。

10進表記の生成と3種類の読み取り

サロゲートに分割せずコードポイントを表す

A你😀 は A你😀 になります。絵文字は完全なコードポイントで表し、2つのサロゲート参照には分割しません。英字や空白も変換し、é は é、空白は  、LFは 
 になります。名前付き文字参照は生成しません。

文中で認識する3つの形式

10進の A、16進の A または A、小文字のuを使った \u に16進数字4桁が続く \u0041 の形式を認識します。数値参照には末尾のセミコロンが必要です。16進数字の大文字・小文字は問わず、周囲の通常のテキストは残します。

😀、😀、対になった \uD83D\uDE00 は、いずれも 😀 になります。JS/JSON文字列全体の解析やHTMLの実行は行いません。

厳密なHTML検証を行う範囲

he 1.2.0のstrictなHTML検証は、エンコードと数値参照のデコードに適用します。�、€、�、� などの参照は拒否します。エンコードではNUL、U+0080などのC1制御文字、U+FFFF、孤立したサロゲートも拒否します。

\uXXXXの処理には、このHTML検証を適用しません。\u0000や\uFFFFは対応するコード単位にデコードできます。最終的な出力チェックで拒否するのは、孤立したサロゲートだけです。

旧形式の �� は結合せずに拒否します。この絵文字には 😀 を使います。

数値文字参照についての質問

不正に見える表記がエラーにならないのはなぜですか?

変換対象は認識した3形式だけです。\uZZZZ、\u{41}、\U0041、&#xZZ;、セミコロンのない &#65 は文字列のまま残します。&、65 66 のような数字だけの並び、\n も同様です。あらゆる不正構文の検証やUTF-8バイト列のデコードは行いません。

多重に書かれた参照も一度にデコードしますか?

いいえ。A と \u0026#65; は、どちらも A ではなく文字列 A になります。置換で得られたテキストは再走査しません。

空白や改行、空の入力はどう扱いますか?

空白文字の削除やUnicode正規化は行わず、空の入力は空の結果になります。textareaは実際のCRLF/CR改行をLFにそろえます。コアではCRを 
 にエンコードできますが、数値参照のstrictデコードは 
 を拒否します。すべての入力で元に戻せるわけではありません。

最近使ったツール: