エスケープ文字

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピューティングおよび電気通信では、エスケープ文字は、文字シーケンス内の次の文字に対して代替解釈を呼び出す文字です。エスケープ文字は、メタ文字の特定のケースです。一般に、何かがエスケープ文字であるかどうかの判断は、コンテキストによって異なります。

電気通信分野では、エスケープ文字は、次の文字が異なる方法でエンコードされていることを示すために使用されます。これは、基盤となる通信ハードウェアによって認識および処理される制御文字を変更するために使用されます。このコンテキストでは、エスケープ文字の使用はしばしば引用符と呼ばれます。

定義

エスケープ文字には独自の意味がない場合があるため、すべてのエスケープシーケンスは2文字以上です。

エスケープ文字は、多くのプログラミング言語、データ形式、および通信プロトコルの構文の一部です。特定のアルファベットの場合、エスケープ文字の目的は文字シーケンス(いわゆるエスケープシーケンス)を開始することです。これは、接頭辞付きのエスケープ文字なしで発生する同じ文字とは異なる方法で解釈する必要があります。

エスケープシーケンスの機能は次のとおりです。

  • デバイスコマンドや特殊データなど、アルファベットで直接表すことができない構文エンティティをエンコードするため。
  • 文字を表すため。文字の引用符と呼ばれ、現在のコンテキストでは入力できないか、望ましくない解釈が必要になります。この場合、エスケープシーケンスは、エスケープ文字自体と「引用符で囲まれた」文字で構成される有向グラフです。

制御文字

一般に、エスケープ文字は(デバイス)制御文字の特定のケースではなく、その逆も同様です。制御文字を非グラフィックとして定義する場合、または出力デバイス(プリンターテキスト端末など)に対して特別な意味を持つものとして定義する場合、このデバイスのエスケープ文字はすべて制御文字です。ただし、プログラミングで使用されるエスケープ文字(バックスラッシュ、「\」など)はグラフィックであるため、制御文字ではありません。逆に、 ASCII「制御文字」 のほとんど(すべてではありません)は、分離して何らかの制御機能を備えているため、エスケープ文字ではありません。

多くのプログラミング言語では、エスケープ文字は制御文字と呼ばれるいくつかのエスケープシーケンスも形成します。たとえば、改行のエスケープシーケンスは\n。です。

JavaScript

JavaScriptは、\(バックスラッシュ)を次のエスケープ文字として使用します:[1] [2]

  • \'一重引用符
  • \"二重引用符
  • \\バックスラッシュ
  • \n改行
  • \rキャリッジリターン
  • \tタブ
  • \bバックスペース
  • \fフォームフィード
  • \v垂直タブ(Internet Explorer 9'\v以前は垂直タブ()の'v代わりに扱います'\x0B。ブラウザ間の互換性が懸念される場合は、の\x0B代わりに使用して\vください。)
  • \0ヌル文字(U + 0000 NULL)(次の文字が10進数でない場合のみ、それ以外の場合は8進数のエスケープシーケンス)
  • \xFF16進バイト「FF」で表される文字

JSON文字列では \vandエスケープは許可されていないことに注意してください。\0

コード例:

class  hw  { 
   public  static  void  main () { 
       System アウトprintln "Using'Back slash n ':\ n単語をnxt行に移動します" ); // \ n
       システムアウトprintln "「バックスラッシュタブ」を使用:\ t単語を1つのタブだけ移動します" ); // \ t
       システムアウトprintln "'バックスラッシュR'を使用\ rバックスラッシュn 'と同じように動作します" ); // \ r 
   } 
}}

ASCIIエスケープ文字

ASCIIの「エスケープ」文字(8進数\03316進数\x1B、または^[、または、10進数では、27)は、制御シーケンスまたはエスケープシーケンスと呼ばれる一連の文字を開始するために多くの出力デバイスで使用されます。通常、エスケープ文字は最初にそのようなシーケンスで送信され、次の文字がプレーン文字ではなく制御シーケンスとして解釈されることをデバイスに警告します。その後、1つ以上の文字が続き、詳細なアクションを指定します。その後、デバイスは通常の文字の解釈に戻ります。たとえば、のシーケンスの^[後に印刷可能な文字が続くと、[2;10HDECVT102端末 カーソルを移動します。画面の2行目の10番目のセルに移動します。これは後に、ANSIX3.64標準でカバーされるANSIエスケープコードに合わせて開発されました。エスケープ文字は、HewlettPackard プリンターコマンド言語の各コマンドシーケンスも開始します。

「エスケープ文字」という用語への初期の言及は、ボブ・バーマーのIBM技術出版物に見られます。彼は、 ASCII文字セットの研究中にこのメカニズムを発明したとされています。[3]

Escキーは通常、標準のPCキーボードにあります。ただし、PDAのキーボードや、主にASCII通信用に設計されていないその他のデバイスには一般的に存在しません。DEC VT220シリーズは、メインキーパッドの上にあるキーの1つを使用する代わりに、専用のEscキーを備えていない数少ない人気のあるキーボードの1つでした。1970年代から1980年代のユーザーインターフェイスでは、このキーをエスケープ文字として使用することは珍しくありませんでしたが、最近のデスクトップコンピューターでは、このような使用は廃止されています。キーがAltMode(代替モードの場合)で識別される場合がありました。[専用キーがなくても、を押しながら入力することでエスケープ文字コードを生成できますCtrl

プログラミングとデータフォーマット

最近のプログラミング言語の多くは、文字列リテラルの区切り文字として二重引用符(")を指定していますバックスラッシュ)エスケープ文字は、通常、文字列リテラル内に二重引用符を含める2つの方法を提供します。これは、文字列に埋め込まれた二重引用符文字の意味を変更するか(なる)、または次のような文字シーケンスの意味を変更することによって行われます。円記号の16進値(になります)。 \\""\x22"

CC ++Java、およびRubyはすべて、まったく同じ2つの円記号エスケープスタイルを許可します。PostScript言語とMicrosoftリッチテキスト形式もバックスラッシュエスケープを使用しますquoted-printableエンコーディングでは、等号をエスケープ文字として 使用します。

URLURIはを使用します-非ASCII文字の場合と同様に、エスケープして特別な意味を持つ文字を引用します。アンパサンド( )文字は、 SGMLおよびHTMLXMLなどの派生形式&ではエスケープ文字と見なすことができます

一部のプログラミング言語では、エスケープ文字を必要とせずに、リテラルで特殊文字を表す他の方法も提供されています(区切り文字の衝突などを参照)。

通信プロトコル

ポイントツーポイントプロトコル(PPP)は、エスケープ文字として0x7D オクテット\175、またはASCII :)を使用します。}直後のオクテットは、より高いレベルのプロトコルに渡される前にXORされる必要があります。これは、PPPによってカプセル化された高レベルのプロトコルによってこれらのオクテットを送信する必要がある場合、および制御文字(PPPでフレームの開始と終了をマークするために使用される)の0x20両方に適用されます。リンクが確立されます。つまり、より高いレベルのプロトコルが送信したい場合、それはシーケンスとして送信され、として送信されます。 0x7D0x7E0x7D0x7D 0x5D0x7E0x7D 0x5E

ボーンシェル

Bourneシェル(sh)では、アスタリスク*疑問符?)の文字は、グロブを介して展開されたワイルドカード文字です。先行するエスケープ文字がない場合、は、そのようなファイルがある場合にのみピリオドで始まらない作業ディレクトリ内のすべてのファイルの名前に展開されます。それ以外の場合は展開されませんしたがって、文字通り「*」と呼ばれるファイルを参照するには、シェルの前にバックスラッシュ()を付けて、このように解釈しないようにシェルに指示する必要がありますこれにより、アスタリスク()の解釈が変更されます。比較: **\*

 
rm *     #現在のディレクトリ内のすべてのファイルを削除します

rm \ *    #*という名前のファイルを削除します

Windowsコマンドプロンプト

Windowsコマンドラインインタプリタは、キャレット文字( )を使用し^特別な意味を持つ予約文字(特に、、、、、、、、)をエスケープ&ます[4] DOSコマンドラインインタプリタは、同様の構文を持っていますが、これをサポートしていません。 |()<>^

たとえば、Windowsコマンドプロンプトでは、これにより構文エラーが発生します。

C:\> echo  < hello world>
コマンドの構文が正しくありません。

一方、これは文字列を出力します:<hello world>

C:\> echo  ^ < hello world ^>
<hello world>

Windows PowerShell

Windowsでは、円記号はパス区切り文字として使用されます。したがって、通常はエスケープ文字として使用できません。PowerShellは、代わりにバックティック[5]( `)を使用します。

たとえば、次のコマンド:

PS C:\> echo " ` t最初の行`n新しい行"
        最初の行
改行

その他

  • Quoted-printableは、8ビットデータを制限された行長の7ビットデータにエンコードし、等号=)をエスケープ文字として使用します。

も参照してください

参考文献

  1. ^ 「JavaScript文字エスケープシーケンス・MathiasBynens」Mathiasbynens.be 2014年6月30日取得
  2. ^ 「特殊文字(JavaScript)」Msdn.microsoft.com。2014-06-20 2014年6月30日取得
  3. ^ ベマー、ボブ。「ボブ・バーマーがエスケープシーケンスとキーを発明した方法」www.bobbemer.com 2018年3月22日取得
  4. ^ ティムヒル(1998)。「WindowsNTコマンドシェル」MacMillanテクニカルパブリッシング2010年1月13日取得
  5. ^ "about_Escape_Characters"Msdn.microsoft.com。2014-05-08。2016年11月25日にオリジナルからアーカイブされました2016年11月24日取得

外部リンク

パブリックドメイン この記事に は、一般サービス管理文書「連邦規格1037C」のパブリックドメインの資料が組み込まれています