ForHosting KIT · 開発者向けツール

C文字列エスケープ

引用符やバックスラッシュ、改行が1つ混じるだけでC言語の文字列は壊れます。Hello "world"の後に改行とline 2が続く文は、Hello \"world\"\nline 2に変換され、そのままソースに貼れます。逆変換もでき、ブラウザで無料で使えます。

  • 無料
  • ブラウザで動作
  • 登録不要
  • データは端末の外に出ません
ご利用方法 ウェブAPIメールTelegramアプリ 近日
入力した場合
テキスト
Hello "world" line 2
計算モード
Escape
引用符
Double
結果
結果
Hello \"world\"\nline 2
長さ
23
リテラル
"Hello \"world\"\nline 2"

CやC++の文字列リテラルに自由文を埋め込むのは定番の落とし穴です。二重引用符ひとつで文字列が終わり、裸のバックスラッシュは次の文字を飲み込み、素の改行は構文エラーになり、ログでは問題なさそうな8進・16進エスケープもソースに貼ると切り詰めや不正になり得ます。本C文字列エスケーパーは平文を安全なリテラル本体(貼り付け用の引用付きリテラルも)へ変換し、元の文字へ戻すときも同じ対応表を逆に適用します。escapeモードは選んだ引用スタイル(通常の"..."なら二重、文字定数なら一重)に加え、バックスラッシュ、標準の制御エスケープ、非ASCII向けの任意のhex/汎用文字名を扱います。

C/C++文字列エスケープの実務上の動き

CやC++の文字列リテラルは二重引用符で囲んだ文字列であり、文字定数は一重引用符を使います。その中でバックスラッシュはエスケープの開始です。\\は1本のバックスラッシュ、\"は二重引用文字列を安全に閉じ、\'は文字定数で同様に働き、\?

はトライグラフに敏感なツールチェーンが疑問符を誤読しないためのものです。名前付き制御エスケープはC/C++で標準です。\nは改行、\rは復帰、\tはタブ、ほかに\aアラート、\bバックスペース、\fフォームフィード、\v垂直タブがあります。

システムコードで日常的に重要な数値形は2つです。8進エスケープはバックスラッシュに続く1〜3桁の8進数字(\0はヌルバイト、\101は文字A)、16進エスケープは\xに続く1桁以上のhexです。C99とC++は移植可能なUnicodeソース向けに汎用文字名\uXXXXと\UXXXXXXXXも受け付けます。

本能力はこれらの規則を決定的に適用します。escapeモードでは各コード単位を走査し、選んだ引用スタイルで最短の安全なエスケープに置き換え、存在する名前付き制御を使い、他のC0バイトは\xHHに落とし、hexがtrueなら非ASCIIをすべて書き直します。

unescapeモードでは同じ並びを文字へ戻し、末尾バックスラッシュ、不完全な\xや汎用名、非hex桁、範囲外コードポイント、厳密読解では未定義動作となる未知の文字エスケープを拒否します。

送信する内容と返却される内容

modeがescapeのときは平文をC/C++文字列リテラル本体としてresultに入れ、選んだ引用で包んだliteralも返します。quoteの既定はdoubleです。文字定数や関連方言の一重引用文字列向けにはsingleを指定してください。

escapeは選んだ区切りだけを強制するため、二重引用本体の中ではアポストロフィを生のまま残せます。hexの既定はfalseで、非ASCII文字はエスケープ本体にリテラル文字として残ります。応答はmode・quote・hex・元のtext・result・resultの長さをエコーします。

検証失敗は前払い残高を消費しません。典型的な確認は、埋め込み引用と改行を含む挨拶のescape、\xE9(é)や\101(A)を含む本体のunescape、hex trueで非ASCIIを\x/\u形にするescape、裸のバックスラッシュで終わる文字列の拒否です。

C文字列エスケーパーが価値を発揮する場面

組み込みファームウェアやデバイスドライバのチームは、すでに8進・16進エスケープを含むプロトコルダンプを貼り付け、切り詰められた\x列で黙ってバイトを捏造せず大きく失敗するunescape経路を必要とします。

コピー&ペースト例を示すドキュメントやクックブックは、ユーザー提供サンプルが有効なC文字列リテラルのままであるための信頼できるescape経路を必要とします。QAとCIパイプラインはホスト横断で黄金のescape/unescapeベクトルを比較し、改行が二重引用下で常に\nとなり、コンパイルを壊す素の改行にならないようにします。

C文字列構文を教える教材著者は8進と16進を明示した例を求めており、それが本ランディングが捉える検索意図です。JavaScript文字列エスケープ、HTMLエンティティ、URLパーセント符号化が必要な場合は、本C文字列エスケーパーページに載せすぎず、別の検索意図とランディングとして扱ってください。

生成C/C++コードでの安全な文字列リテラル

自由文のタイトル・メッセージ・設定値を、二重引用のC文字列リテラルや一重引用の文字定数に書き込む前にエスケープします。

ログから8進・16進エスケープを復号

ファームウェアログ・チケット・黄金ファイルのC形式文字列本体を読みやすいテキストへ戻し、不完全・不正なエスケープでは厳格に失敗します。

ツールチェーン向けASCII専用hex書き換え

hexをtrueにしてescapeし、非ASCIIを\xHH・\uXXXX・\UXXXXXXXX列にし、ASCIIのみリポジトリと厳格コンパイラに適合させます。

resultとliteralの違いは何ですか?

resultは周囲の引用がないエスケープ本体です。literal(escapeモードのみ)は選んだ引用スタイルでその本体を包み、ソースに完全なC/C++文字列を貼れるようにします。

escapeとunescapeの両方はできますか?

はい。 modeをescape(既定)にすると平文を符号化し、modeをunescapeにするとC/C++文字列リテラル本体からテキストを復元します。

対応する引用スタイルは?

通常の文字列リテラル向けのdouble(既定)と、文字定数スタイル向けのsingleです。escapeモードは選んだ区切り文字だけをエスケープします。

エスケープの書き方が間違っている場合はどうなりますか?

元に戻す処理はその場で止まり、推測で文字を作らずに問題点を知らせます。末尾のバックスラッシュ、不完全な\x、16進数でない文字、範囲外の符号位置、未知の文字によるエスケープは受け付けません。

\101のような8進数のエスケープは何を表しますか?

バックスラッシュの後に1〜3桁の8進数を続けた書き方で、その値の文字を表します。たとえば\0はヌル文字、\101は大文字のAになります。

このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。

POSThttps://api.kit.forhosting.com/enc/c-escape

Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。

curl -X POST https://api.kit.forhosting.com/enc/c-escape \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello \"world\"\nline 2"}'
{
  "text": "Hello \"world\"\nline 2"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.c_escape",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。

1リクエストあたり$0.002

単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。

HTTPコード意味
401unauthorizedAPIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。
402insufficient_balance残高が不足しています。チャージ後に再度お試しください。
404unknown_type指定されたタスクタイプは存在しません。タイプ名を確認してください。
429rate_limitedリクエストが多すぎます。しばらく待ってから再度お試しください。

unescapeモードは\n、\r、\t、\\、\"、\'、\?、\a、\b、\f、\v、1〜3桁の8進、\xHH、\uXXXX、\UXXXXXXXXを理解し、末尾バックスラッシュ・不完全なhex・未知のエスケープ文字では半端なゴミを作らずinvalid_inputで即失敗します。

C/C++文字列エスケープの実務上の動き

経路はネットワークも乱数シードも壁時計タイムスタンプもない純粋な文字列処理なので、同一入力は常に同一JSONを返します。成功したAPI呼び出しの料金は公開ベースの$0.002(アイテム単位)であり、検証失敗は前払い残高を消費しません。

送信する内容と返却される内容

必須の文字列フィールドtextと、任意のmode・quote・hexを送ってください。modeを省略すると既定はescapeなので、1つのペイロードでも有用な処理が行えます。modeがunescapeのときはtext内のエスケープ列を戻し、resultに平文を返します(literalフィールドはありません)。text欠落、非文字列オブジェクト、未対応のmode/quote、hexとして読めない値、文書化された最大長超過、末尾バックスラッシュ、不完全hex、不完全な汎用文字名、非hex桁、不正コードポイント、未知のエスケープ文字はすべてinvalid_inputと明確な英語メッセージで失敗します。成功時のAPI料金は公開ベースの$0.002(アイテム単位)です。

C文字列エスケーパーが価値を発揮する場面

本能力は純粋なparseエンジンであるため、API料金は成功アイテムあたり公開ベースの$0.002であり、検証失敗は残高を消費しません。

エスケープ列が不正な場合はどうなりますか?

unescapeはinvalid_inputで失敗し、位置と悪い列(末尾バックスラッシュ、不完全な\xHH、未知の文字エスケープなど)を示します。検証失敗には課金されません。

料金はいくらですか?

ブラウザツールは無料でローカル実行です。API要求は成功アイテムあたり$0.002のKIT前払い残高を使い、不正入力は課金されません。

KITの完全なドキュメントを見る →