🔣 文字列エスケープ変換

文字列を JSON・正規表現・バックスラッシュ/改行・SQL・CSV の各ルールでエスケープ、または元に戻す(アンエスケープ)ツールです。コードに文字列を安全に埋め込む・正規表現でユーザー入力を安全に扱う、といった場面で使えます。処理はすべてブラウザ内で完結し、入力はどこにも送信されません。

入力

対象
方向

エスケープ結果

対象ごとの変換ルール

JSON " → \" / \ → \\ / 改行 → \n / タブ → \t / 制御文字 → \uXXXX(JSON.stringify準拠)。
正規表現 . * + ? ^ $ { } ( ) | [ ] \ の前に \ を付けてリテラル化。例: a.b(c) → a\.b\(c\)。
\改行 実際の改行・タブ・CR・\ ⇔ \n \t \r \\。複数行を1行の文字列にしたいときに。
SQL ' → ''(シングルクォートの二重化)。第一にプレースホルダを使い、これは補助として。
CSV フィールド全体を " で囲み、内部の " を "" に二重化(例: a"b → "a""b")。

「アンエスケープ」を選ぶと、それぞれ逆方向(エスケープ済み文字列 → 元の文字列)に変換します。

解説

文字列エスケープとは、プログラムやデータ形式の中で「特別な意味を持つ記号」を、そのままの文字として扱わせるための書き換えです。例えば JSON では「"(ダブルクォート)」が文字列の終わりを表すため、文字としての「"」は「\"」と書く必要があります。エスケープを忘れると構文エラーになったり、値の境界が崩れて意図しない動作を招いたりします。本ツールは、よく使う5つの対象について、エスケープと、その逆のアンエスケープ(元に戻す)を相互に変換します。すべてブラウザ内で処理し、入力内容は外部に送信しません。

「JSON文字列」は、JavaScript標準の JSON.stringify と同じ規則で変換します。「"」と「\」をエスケープし、改行は \n、タブは \t、その他の制御文字は \uXXXX の形にします。囲みのダブルクォートは付けず、文字列リテラルの「中身」だけを返すので、既存のコードのクォートの中にそのまま貼り付けられます。例として、改行を含む2文字「a・改行・b」をエスケープすると、バックスラッシュとnを含む a\nb という4文字になります。アンエスケープはこの逆で、\n などを実際の改行に戻します。

「正規表現」は、. * + ? ^ $ { } ( ) | [ ] \ といった正規表現の特殊文字の前にバックスラッシュを付けて「ただの文字」に変えます。これは、ユーザーが入力した文字列を検索パターンにそのまま埋め込むときに欠かせません。エスケープを怠ると、入力中の「.」が任意の1文字にマッチするなど、意図しない一致やエラー(正規表現インジェクション)の原因になります。例えば a.b(c) をエスケープすると a\.b\(c\) となり、丸括弧やドットを文字どおり検索できます。

「バックスラッシュ/改行」は、実際の改行・タブ・CR・バックスラッシュと、\n \t \r \\ という記法を相互変換します。複数行のテキストを1行の文字列にまとめたり、逆にログ中の \n を実際の改行に展開して読みやすくしたりするのに使えます。「SQL」はシングルクォート「'」を「''」に二重化する標準SQLのエスケープです。ただしSQLは値の埋め込み自体を避け、プレースホルダ(バインド変数)を第一に使うのが安全で、これは補助的な用途です。「CSV」はフィールド全体を「"」で囲み、内部の「"」を「""」に二重化して、カンマや改行・引用符を含む値でも1フィールドとして安全に表せる形にします。

よくある質問

エスケープとアンエスケープの違いは何ですか?

エスケープは、記号を「特別な意味を持たない、ただの文字」として扱わせるために書き換えることです(例: " を \" に)。アンエスケープはその逆で、エスケープ済みの文字列を元の文字に戻すことです。本ツールは「方向」で切り替えられます。

JSONのエスケープ結果にダブルクォートが付かないのはなぜですか?

文字列リテラルの「中身」だけを出力する仕様のためです。既存コードの "..." の中にそのまま貼り付けられるようにしています。JSON.stringify と同じ規則で " \ 改行 タブ 制御文字を変換し、囲みの " だけを取り除いています。

正規表現のエスケープはどんなときに必要ですか?

ユーザー入力など任意の文字列を検索パターンに埋め込むときです。エスケープしないと入力中の「.」「*」「(」などが正規表現の記号として働き、意図しない一致やエラー(正規表現インジェクション)を招きます。例: a.b(c) → a\.b\(c\)。

SQLのエスケープだけで安全になりますか?

いいえ、これは補助です。SQLでは値を文字列に直接埋め込むこと自体を避け、プレースホルダ(バインド変数)やORMの安全なAPIを第一に使ってください。シングルクォートの二重化は、あくまで手作業で確認したいときの参考用途です。

CSVのエスケープでフィールドが引用符で囲まれるのはなぜですか?

カンマ・改行・ダブルクォートを含む値でも、1つのフィールドとして正しく読めるようにするためです。RFC 4180の方式に沿って、フィールド全体を " で囲み、内部の " を "" に二重化しています。アンエスケープでは囲みの " を外して "" を " に戻します。

「バックスラッシュ/改行」モードは何に使いますか?

複数行のテキストを \n を含む1行の文字列にまとめたり、逆に \n \t \r を実際の改行・タブ・CRに展開したりするのに使います。ログや設定値を1行にしたい、あるいは読みやすく展開したい、といった場面で便利です。

アンエスケープで「解釈できません」と出るのはなぜですか?

入力が、その対象の「エスケープ済み文字列」として成り立っていない場合です。例えばJSONのアンエスケープで、閉じられていないエスケープや不正な \u が含まれると解釈できません。対象や方向が正しいか、入力が壊れていないかを確認してください。

入力した文字列はサーバーに送られますか?

送られません。変換はすべてブラウザ内(JavaScript)で完結し、入力内容はどこにも送信されず保存もされません。オフラインでも利用できます。