レッスン 7
文字列エスケープと Unicode
エスケープシーケンス、Unicode コードポイント、JSON 文字列内の特殊文字。
JSON の文字列は常にダブルクォートで区切られます。文字列を壊す、または曖昧になる文字は、バックスラッシュでエスケープする必要があります。
よく使うエスケープシーケンス
| シーケンス | 意味 |
|---|---|
\" | 文字列内のダブルクォート |
\\ | リテラルのバックスラッシュ |
\n | 改行 |
\t | タブ |
\r | キャリッジリターン |
\b | バックスペース |
\f | フォームフィード |
例:
{
"message": "Line one\nLine two",
"path": "C:\\Users\\dev\\config.json"
}
Unicode エスケープ
4 桁の 16 進数で Unicode コードポイントを \uXXXX で表します。
{
"greeting": "Hello, \u4e16\u754c"
}
基本多言語面外の文字は、JSON では UTF-16 サロゲートペアとして 2 つの \u エスケープが現れます — 多くのエディタとパーサーは UTF-8 ファイルの読み書き時にこれを処理します。
文字列内にそのまま置けない文字
制御文字(U+0000 から U+001F)はエスケープが必要です。文字列内のエスケープされていない改行は無効な JSON です — 代わりに \n を使いましょう。
UTF-8 ファイル vs エスケープされた Unicode
UTF-8 で保存された .json ファイルには、リテラルの中国語や絵文字を含められます。
{ "label": "世界" }
これは有効な JSON です。正規化すれば \u 形式と等価 — パイプラインと diff ツールにとって都合のよい方を選んでください。
実践的なヒント
- ログから文字列をコピーするとき、スマートクォート
""に注意 — これらは有効な JSON の区切り文字ではありません。 - API ドキュメントでは例に
\nが出ることがあります。パーサーはメモリ上で実際の改行に変換します。 - 長い文字列内で検証が失敗したら、エスケープされていないバックスラッシュや壊れた
\uシーケンスを探してください。