Yueseryueser.com

← ガイド一覧

Unicode エスケープ解除のガイド:\u4e2d を文字に戻す

認識するのはバックスラッシュと u、そして16進数4桁だけです。それ以外のエスケープは普通の文字として残ります。この点を押さえれば、結果が出ないときの理由も分かります。

ツールを開く:Unicodeエスケープデコーダー

どこで出会う文字列か

バックエンドが安全のため中国語をエスケープしてログに出す、Java プロジェクトが properties に文言を置く、ビルドツールが文字列リテラルを書き換える、API がエスケープ形式でエラーを返す。いずれも同じ作業です。

全角スペースやゼロ幅文字の確認にも使えます。先にエスケープし、少しずつ戻すと、見えない文字が符号位置として現れ、目視では分からない差異を特定できます。原因の説明にも便利です。

認識の規則:4桁、1層

バックスラッシュと u の直後に16進数4桁が続くものだけを、大文字小文字を問わず1層ずつ置換します。改行やタブ、16進数2桁のエスケープはこの形ではないため、そのまま残ります。

絵文字は UTF-16 ではサロゲートペアです。4桁のエスケープが2つ揃っていれば1文字に戻りますが、片方だけなら孤立したサロゲートになり、空白や疑問符として表示されます。コピー時の欠落を疑ってください。

境界:復元以外はしない

ES6 の符号位置エスケープ、URL のパーセントエンコード、Base64 は対象外です。それぞれ専用のツールがあります。混ぜて処理すると半分だけ正しい結果になり、どこが違うのか分かりにくくなります。

鍵を使わないので誰でも実行できます。「エスケープされているから安全」と考えるのは危険です。また、壊れたバイトは戻せません。保存時に疑問符へ置き換わっていれば、復元しても疑問符のままです。

よくある質問

改行のエスケープが改行にならないのはなぜですか

このツールは4桁のユニコードエスケープだけを認識するからです。バックスラッシュ n は別のエスケープで、そのまま出力されます。改行が必要なら手動で置換するか、各言語の規則に任せてください。

サロゲートペアは絵文字に戻りますか

揃っていれば戻ります。4桁のエスケープ2つが1つの絵文字になります。片方だけの場合は復元できず、空白や疑問符になります。元の文字列が途中で切れた合図です。

Base64 や URL エンコードも解けますか

解けません。ここはユニコードエスケープ専用です。Base64、URL エンコード、HTML エンティティはそれぞれ専用のツールがあり、混在させると結果が不完全になります。

関連ツール:Unicodeエスケープデコーダー