# 文字列のエスケープとアンエスケープ

JSON・JavaScript 文字列、SQL 文字列、CSV フィールド、正規表現、シェルの語向けにテキストをエスケープしたり、エスケープを元に戻したりします。

https://codeknife.dev/ja/esukeepu/

## できること

テキストを JSON・JavaScript 文字列、SQL 文字列、CSV フィールド、正規表現、シェルの語の中に置けるようエスケープし、エスケープを元に戻します。各形式は必要な文字だけを正確にエスケープします。

## 使い方

1. テキストを入力または貼り付けるか、テキストファイルをドロップします。
2. テキストの行き先（**JSON 文字列**、**JavaScript 文字列**、**SQL 文字列**、**CSV フィールド**、**正規表現**、**シェルの語**）と、**エスケープ**か**アンエスケープ**かを選びます。
3. 結果をコピーまたはダウンロードするか、**出力を入力として使う**で次の入力にします。

## 例

`He said "it's fine"` と改行のエスケープ：

JSON は `He said \"it's fine\"\n`、SQL は `He said "it''s fine"`、シェルは `'He said "it'\''s fine"'` になります。

## 知っておくと便利なこと

- JSON と JavaScript は、バックスラッシュ、文字列を囲む引用符、改行、制御文字をエスケープします。アンエスケープは `\n`、`\t`、`\uXXXX` などを読み、JavaScript は `\xHH` と `\u{…}` も読みます。
- SQL は単一引用符を2つ重ねます。手書きのリテラルには正しい方法ですが、コードではバインドパラメータを使ってください。
- CSV フィールドは、カンマ・引用符・改行を含むときだけ引用符で囲み、中の引用符は2つ重ねます。
- シェルの語は単一引用符で囲み、中の単一引用符は `'\''` と書くので、何も展開されません。

## 形式ごとにエスケープが違うのはなぜですか？

構文ごとに特殊文字が違います。JSON 文字列では引用符、バックスラッシュ、制御文字をエスケープします。SQL 文字列では単一引用符を2つ重ねるだけです。CSV フィールドはカンマ・引用符・改行を含むと引用符で囲みます。正規表現は演算子をエスケープし、シェルの語は何も展開されないよう単一引用符で囲みます。

## よくある質問

### エスケープだけで SQL インジェクションを防げますか？

いいえ。引用符を重ねるのはこのツールが示す方法で、手書きのクエリのリテラルには正しいですが、コードの防御ではありません。値はバインドパラメータとして渡し、SQL 文の一部にならないようにしてください。

### JSON 文字列と JavaScript 文字列の違いは？

JSON は少数のエスケープしか許さず、常に二重引用符を使います。JavaScript は単一引用符、\x41や、どちらの引用符でもエスケープを許します。そのため JSON としてアンエスケープすると、JavaScript なら受け入れる並びは拒否されます。

### このツールはテキストをどこかに送信しますか？

いいえ。すべてブラウザ内で行われます。入力した内容が当社のサーバーに送信されることはありません。