JS文字列エスケープ
引用符と改行を含むHello "world"のような2行の文は、Hello \"world\"\nline 2になり、二重引用符の間にそのまま貼り付けられます。二重・一重・バッククォートの引用符を選べ、エスケープされた文字列を元に戻すこともできます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello "world" line 2
- 計算モード
- Escape
- 引用符
- Double
- 結果
- Hello \"world\"\nline 2
- 長さ
- 23
- リテラル
- "Hello \"world\"\nline 2"
自由なテキストをJavaScriptの文字列リテラルに埋め込むと、二重引用符ひとつで文字列が終わり、バックスラッシュが次の文字を飲み込み、生の改行は構文エラーになり、非ASCIIの貼り付けは\uXXXXを期待する古いツールを壊すことがあります。このJavaScript文字列エスケーパーは平文を安全な文字列リテラル本体(および貼り付け用の引用符付きリテラル)に変換し、元の文字が必要なときは同じ対応を逆に適用します。escapeモードでは選んだ引用スタイル(二重・一重・バックティック)に加え、バックスラッシュ、通常の制御エスケープ、必要に応じて非ASCII各コードポイントのunicodeエスケープを扱います。
JavaScript文字列エスケープの実際の動き
JavaScriptの文字列リテラルは、二重引用符・一重引用符・バックティックで囲まれた文字の並びです。その内側ではバックスラッシュがエスケープを開始します。\\は1本のバックスラッシュ、\"や\'は選んだ引用符、\nは改行、\rは復帰、\tはタブ、\0・\b・\f・\vなどの短い形は他の制御文字を表します。
現代のエンジンでは十六進の二形式が標準です。\xHHは二桁の十六進でコード単位を、\uXXXXは四桁でUTF-16コード単位を符号化します。ES6では\u{1F600}形式の波括弧も使え、U+10FFFFまでの任意のUnicodeコードポイントを、手作業のサロゲートペアなしに表せます。
本機能はこれらの規則を決定的に適用します。escapeモードでは各コード単位を走査し、選んだ引用スタイル向けに最短の安全なエスケープへ置換し、複数行の貼り付けがソース行を壊さないよう常にU+2028とU+2029をエスケープし、unicodeがtrueのときは非ASCIIを\uXXXXまたは\u{…}に書き換えます。
unescapeモードでは同じ列を解析し、末尾のバックスラッシュ、不完全な\xや\u、空の\u{}、範囲外のコードポイント、緩いAnnex Bモードにしかない旧式八進エスケープを拒否します。
送信内容と返却内容
escapeモードは平文をresultに格納するJavaScript文字列リテラル本体へ変換し、選んだ引用符で包んだliteralも返します。quoteの既定はdoubleで、宛先構文が一重やバックティックのときはsingleまたはbacktickを指定します。
escapeはその区切り文字だけを(バックティック時は補間を開く${列も)強制的にエスケープします。unicodeの既定はfalseで、非ASCII文字はエスケープ後の本体にそのまま残ります。古い符号化やシリアライズされたフィクスチャ向けにASCIIのみのソースが必要なときはtrueにしてください。
検証失敗は前払い残高を消費しません。典型例は、埋め込み引用符と改行を含む挨拶のescape、\u00E9でéを表す本体のunescape、unicode trueでcaféをcaf\u00E9にするescape、裸のバックスラッシュで終わる文字列の拒否です。
手早い確認や授業デモには無料のブラウザフォームを、一括フィクスチャ生成や回帰ベクトルには同じ契約をスクリプトから呼び出してください。
JS文字列エスケープが役立つ場面
設定断片・ローカライズマップ・テストフィクスチャを出力するコード生成器は、引用符内に書く前にすべての自由テキスト欄をエスケープしなければ、製品名のアポストロフィ一つで生成ファイルが壊れます。コピー用の例を示すドキュメントやクックブックは、利用者提供のサンプルが有効なJavaScriptのままになる信頼できるescape経路を必要とします。
サポートとセキュリティのチームは既にバックスラッシュエスケープを含むログ断片を貼り付け、切り詰められた\u列で黙って文字を捏造するのではなく明確に失敗するunescapeを必要とします。ローカライズ技術者はASCIIのみのリポジトリでunicodeモードを強制したとき多バイト言語が往復できるかを検証します。
ECMAScript文字列構文を教える教材著者は、Base64やHTML実体の汎用ツールに埋もれさせず、文字列リテラルエスケープ専用のページを求めます。検索意図と許可されるエスケープ集合が異なるからです。
HTML実体、URLパーセント符号化、完全なJavaScript解析が必要なら、この文字列エスケープページに詰め込むのではなく別の検索意図とランディングとして扱ってください。
活用例
生成コード内の安全な文字列リテラル
二重引用符・一重引用符・テンプレートリテラルのJavaScriptに書き込む前に、自由テキストのタイトル・メッセージ・設定値をエスケープします。
ASCIIのみのunicode書き換え
unicode trueでエスケープし、非ASCII文字をASCIIのみのリポジトリや旧来ツールチェーン向けの\uXXXXまたは\u{…}列にします。
よくある質問
resultとliteralの違いは何ですか?
resultは周囲の引用符なしのエスケープ済み本体です。literal(escapeモードのみ)は選んだ引用スタイルでその本体を包み、ソースに完全なJavaScript文字列を貼り付けられるようにします。
escapeとunescapeの両方はできますか?
はい。 modeをescape(既定)にすると平文を符号化し、modeをunescapeにするとJavaScript文字列リテラル本体からテキストを復元します。
対応する引用スタイルはどれですか?
二重(既定)・一重・バックティックです。escapeモードは選んだ区切り文字だけをエスケープし、バックティックモードはテンプレートリテラル内で安全になるよう${もエスケープします。
アクセント付きの文字を\uのエスケープにするには?
エスケープするときにUnicodeの項目をオンにします。ASCII以外の文字がすべて書き換えられ、caféはcaf\u00E9になり、基本の範囲を超える文字は\u{…}の形になります。
形の崩れたエスケープを戻そうとするとどうなりますか?
推測で補わず、はっきりと受け付けません。末尾の単独のバックスラッシュ、途中で切れた\xや\u、空の\u{}、範囲外のコードポイント、古い8進数の形は、どれも元に戻しません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/js-string-escape \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello \"world\"\nline 2"}'const res = await fetch("https://api.kit.forhosting.com/enc/js-string-escape", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello \"world\"\nline 2"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/js-string-escape",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello \"world\"\nline 2"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/js-string-escape", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello \\"world\\"\\nline 2"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello \"world\"\nline 2"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/js-string-escape", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hello \"world\"\nline 2"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.js_string_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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
unescapeモードは\n、\r、\t、\\ 、\xHH、\uXXXX、\u{…}を理解し、切り詰めや不正な列では中途半端なゴミを返す代わりにinvalid_inputで直ちに失敗します。無料のブラウザツールと有料APIは同一の純粋な同型関数を共有するため、デモ・単体フィクスチャ・本番Webhookは常に同じ変換結果で一致します。
JavaScript文字列エスケープの実際の動き
経路はネットワーク・乱数・壁時計なしの純粋な文字列処理なので、同一入力は常に同一のJSONになります。成功したAPI呼び出しの料金は公開ベースの$0.002/件で、検証失敗は前払い残高を消費しません。
送信内容と返却内容
必須の文字列フィールドtextと、任意のmode・quote・unicodeを送ります。modeを省略すると既定はescapeで、単一ペイロードでも有用です。unescapeモードはtext内のエスケープ列を逆変換し、literalフィールドなしで復元した平文をresultに返します。応答はmode、quote、unicode、元のtext、result、resultのlengthをエコーします。text欠落、非文字列オブジェクト、未対応のmodeやquote、unicodeとして読めない値、文書化された最大長を超える文字列、末尾バックスラッシュ、不完全な十六進エスケープ、非十六進桁、空の波括弧エスケープ、不正なコードポイント、拒否された八進形はすべてinvalid_inputと明確な英語メッセージで失敗します。成功時のAPI料金は公開ベースの$0.002/件です。
JS文字列エスケープが役立つ場面
本機能は純粋なparseエンジンのため、API料金は成功1件あたり公開ベースの$0.002で、検証失敗は残高を消費しません。
連携の活用例
ログとフィクスチャのエスケープ本体を復号
ログ・チケット・ゴールデンファイルのJavaScript文字列本体を読みやすいテキストへ復元し、不完全・不正なエスケープでは厳格に失敗します。
技術的な質問
エスケープ列が不正な場合はどうなりますか?
unescapeはinvalid_inputで失敗し、位置と不正な列(末尾バックスラッシュや不完全な\uXXXXなど)を示します。検証失敗には課金されません。
料金はいくらですか?
ブラウザツールは無料でローカル実行です。API要求は前払いKIT残高を成功1件あたり$0.002で使用し、無効な入力は課金されません。