Unicodeエスケープ変換
Hiは\u0048\u0069になり、アクセント付きのéは\u00e9、絵文字U+1F600は\ud83d\ude00というペアになります。戻すときは読める文字に復元し、壊れたエスケープは推測せずに受け付けません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hi
- 計算モード
- Encode
- 結果
- \u0048\u0069
- 長さ
- 12
- コード単位
- 2
- エスケープ数
- 2
\uの後に続く4桁の十六進数が、1つのUTF-16コードユニットを表します。単純な文字は\u0041、アクセント付き文字は\u00e9になり、基本多言語面の外の文字(絵文字、歴史的な文字、多くの現代記号)は、例えば\ud83d\ude00のような上位と下位のサロゲートペアとして現れます。それらの列を手作業で文書に貼り付けるのは遅く誤りやすく、切り詰められた、あるいは十六進でないエスケープを甘すぎるツールがデコードすると、誤った文字を黙って作り出してしまいます。この機能は、平文を連続した\uXXXX列へ符号化し、エスケープの多い文字列をサロゲートペアを正しく認識したうえで読みやすい文字へ戻します。
\uXXXXエスケープがUTF-16コードユニットを表す仕組み
バックスラッシュ、文字u、そしてちょうど4桁の十六進数です。その形式は、文字がU+FFFFを超えるとき、それ自体で完全なUnicodeスカラーを名指しするのではなく、UTF-16のコードユニットを名指しします。
U+0000からU+FFFFまでの値(単位としてなお出力し得る未対のサロゲートの境界事例を除く)は、大文字Hの\u0048や鋭アクセントのeの\u00e9のように、単一のエスケープになります。U+10000からU+10FFFFまでのスカラーはサロゲートペアとして符号化されます。
まずU+D800–U+DBFFの上位サロゲート、続いてU+DC00–U+DFFFの下位サロゲートです。したがって笑顔のU+1F600は、6桁の単一エスケープではなく\ud83d\ude00になります。\u12のような途中切れ、\uGGGGのような非十六進本体、未知のバックスラッシュエスケープは推測せず拒否します。
有効な上位+下位のペアはfromCodePointで一つのスカラーに再結合され、往復で絵文字と補助面のテキストが保たれます。
活用例
UTF-16とサロゲートペアの教育
一つの絵文字が二つの\uXXXXユニットになることを示し、ペアをデコードして戻すことで長さとコードポイントの概念を定着させます。
よくある質問
このツールはどのエスケープ形式を使いますか?
非BMP文字は上位と下位のサロゲートペアとして符号化されます(例: \ud83d\ude00)。
双方向に変換できますか?
はい。 modeをencode(既定)にすると平文を連続した\uXXXX列にし、modeをdecodeにするとエスケープ(サロゲートペアを含む)を文字へ展開します。
不正なエスケープではどうなりますか?
\u12のような途中切れ、非十六進の本体、未知のバックスラッシュエスケープは、問題を示すメッセージとともに拒否されます。検証失敗は課金されません。
絵文字やその他の非BMP文字に対応していますか?
はい。 Encodeは二つの\uXXXXユニットのサロゲートペアを出し、decodeは有効な上位+下位ペアを一つのスカラーに再結合するため、往復で元の絵文字が保たれます。
戻すときに大文字の\Uも使えますか?
はい。戻すときは\uと\Uのどちらでも、後ろにちょうど4桁の16進数があれば読み取ります。変換するときは、常に小文字のuと小文字の16進数で書き出します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/unicode-escape \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hi café"}'const res = await fetch("https://api.kit.forhosting.com/enc/unicode-escape", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hi café"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/unicode-escape",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hi café"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/unicode-escape", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hi café"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hi café"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/unicode-escape", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hi café"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.unicode_escape",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
JSONのペイロード、Javaのリソースバンドル、JavaScriptの文字列リテラルをデバッグする開発者は、常にバックスラッシュu形式に出会います。無料のブラウザツールと有料APIは一つの決定的なコアを共有するため、教室のデモ、CIの検査、ライブのwebhookは、公開価格$0.002(成功したitem1件あたり)で常に同じ対応付けに一致します。
\uXXXXエスケープがUTF-16コードユニットを表す仕組み
Java、JavaScript、JSONの文字列文法は、いずれも同じ古典的なエスケープでUnicodeテキストを記述します。この設計は、JSON.stringifyの出力、多くのJava Propertiesファイル、コードポイントエスケープ\u{…}より前の古いJavaScriptソースで目にするものと一致します。この機能はencode時にコードポイント認識で入力を走査し、各ユニットに小文字4桁の十六進を出し、decode時は4桁の十六進が続く\uまたは\Uを走査します。
送信する内容と返ってくる内容
Encodeは各文字を連続した\uXXXXユニットにします。Hiは\u0048\u0069になり、ASCIIとcaféと絵文字が混在する文字列は、より長いが完全にエスケープされた結果になります。Decodeは逆を行います。整形式の各\uXXXXを対応するコードユニットに置き換え、両半分があるときサロゲートペアを一つの文字に再結合し、一度もエスケープされなかったリテラル文字はそのまま残すため、混在した貼り付けでも機能します。検証失敗はプリペイド残高を消費しません。必須の文字列フィールドtextと、encodeまたはdecodeに設定する任意のmodeフィールドを送信してください。modeを省略した場合、encodeが既定となるため、単一のペイロードでも有用な処理が行われます。decodeでは\n、\t、\r、\\、\"のような一般的なJSONの同伴エスケープも受け付けるため、文字列リテラルからコピーした断片が最初の改行エスケープで失敗しません。成功時の応答はmodeと元のtextを写し、主出力文字列としてresultを返し、length、code_units(処理したUTF-16ユニット数)、escape_count(生成または消費した\uXXXXの数)、formatラベル\uXXXX、Java・JavaScript・JSONを示す短いstandard注記を含みます。textの欠落、未対応のmode値、文書化された上限を超える文字列、\uの後が途切れた十六進、エスケープ内の非十六進桁、未知のバックスラッシュ列は、いずれもinvalid_inputと、インデックスまたはフィールドを示す英語メッセージで失敗します。成功したAPI呼び出しの料金は、公開されている1件$0.002の基本額です。
実務でUnicodeエスケープ変換が登場する場面
Javaバックエンドと話すモバイルやデスクトップのクライアントは、アクセント付きラベルごとに\u列で埋まったProperties風バンドルをログに出すことがあり、サポートチームはIDEの設定を探す代わりに、専用の変換ランディングへその行を貼り付けます。プログラミング講座では、JavaScriptの文字列長がユーザーが知覚する文字ではなくUTF-16ユニットを数えることを教え、一つの絵文字に二つのエスケープを見せるライブのエンコーダがその教訓を具体化します。バックスラッシュなしのU+スカラー一覧、生のUTF-16十六進ダンプ、URL向けパーセント符号化、名前付きHTMLエンティティが必要な場合は、このUnicodeエスケープ列のページに過負荷をかけるのではなく、別の検索意図とランディングとして扱ってください。それらは、下位のコードが短くても異なるクエリに応えます。APIやwebhookの作者は、非ASCIIの製品名やユーザー生成のキャプションが完全にエスケープされたJSONをしばしば受け取ります。それらを読みやすいテキストへ戻すと、アプリケーションのフルランタイムを立ち上げずにトリアージが速くなります。この機能は純粋なparseエンジンであるため、API料金は成功item1件につき公開の基本額$0.002のままで、検証失敗は残高を消費しません。
連携の活用例
エスケープされたJSONとJavaログのデコード
\u00e9とサロゲートペアで埋まったログ行を貼り付けて読みやすいテキストに戻し、次のデプロイ用に修正したfixtureを再符号化します。
シリアライザ向けCIゴールデン文字列の作成
製品名と絵文字キャプションを、ライブラリ更新後もJSONとJavaの文字列ダンプが一致すべき安定した\uXXXX形へ符号化します。
技術的な質問
料金はいくらですか?
ブラウザツールは無料でローカル実行です。APIリクエストは成功したitem1件あたり$0.002のプリペイドKIT残高を使い、無効な入力は課金されません。