- ベストアンサー
「クォート」「エスケープ」「エンコード」の違い
違いがよく分からないのですが、 用語的には、同じ意味なのでしょうか? 例えば、以下の使い方は、意味が通ってるでしょうか? ・「クォートされるべき文字」をクォートする ・「クォートされるべき文字」をエスケープする ・「クォートされるべき文字」をエンコードする
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>意味が通ってるでしょうか? あっているといえば(通っている)、あっているし、違うといえば違う。 その3つ、全部違う事です。似た場面で、同じ効果を持つので、同じように使われる事があるだけで、違う事を指しています。 例えば「エスケープ」 これは http://ejje.weblio.jp/content/Escape が訳ですが、 プログラム言語(HTMLやJavaScriptなどスクリプトやマークアップ言語も)では、 http://hodade.adam.ne.jp/seiki/page.php?study_escape このような意味です。 「これらの文字を、通常の文字列として認識させる場合は、エスケープしてください」 特定の予約語などキャラクター文字は、その言語の書式上では特殊な意味をもってしまうので、「エスケープして」つまり、「はずれるとか逃れる」という意味で使う。 同じ効果として、「クォート」すると言う操作もある。これは上記のエスケープと違い、文字列(数字とかキャラクターも含む)を特定のマークで囲う。行為の事を指す。 そのまま、「クォート」しないで記述すると、文字列として扱わずに、プログラムの命令文として効果を発揮していまったり、文字列を、文字型として定義させ、認識させることです。 これを大きく言えば、上記の「はずれるとか逃れる」の意味に含まれるが、用途は全く違います。 エンコードは、上記2つと全く違い、元の文字を特定の方式にしたがって、別の文字列に置き換える事をさします。効果としては、エスケープ効果にも役立ちます。 例えば、文字列にスペースを含む物が渡す事ができない場合、エンコードすると、スペースも文字列として変換されるので、エスケープした効果と同じになります。 結果の効果から見ると、質問の3つの文は、特定のシュチュエーションを考えれば成り立つが、それぞれ意味が違うので、ちゃんと何をすることが、エンコードと言うのか認識してから文献をよみましょう。
その他の回答 (2)
- notnot
- ベストアンサー率47% (4900/10358)
クォートとエスケープは現状では同じ意味として使われています。 本来は、 クォート:「決まった文法の中で特別な意味を持った文字の特別な意味をなくしその文字そのものと扱いたい時に行うこと」 エスケープ:「文字に元の意味で無い別の意味を与えるときに行うこと」 と全く別なのですが。 クォートの例: ・カンマを区切りで無くカンマという文字そのものとして扱うために引用符で囲む CSV形式で、 abc,def,"hi,jk",lmn ・引用符の中で引用符自体を引用の終わりを意味するので無く引用符文字自体として扱いたい VisualBasicだと、"abc""def" の用に"でクォートする 他の多くの言語だと、"abc\"def" のように\でクォートする エスケープの例:多くの言語で文字列の中で \n が改行を表す。\がエスケープ文字 どちらも、" " ' 'で囲ったり、 \ を前置したりするので、混同されて現在は両方ともエスケープと書かれていることが多いです。 エンコードにはいろいろな意味がありますが、クォート・エスケープと混同されるような意味でのエンコードというと、「決まった文法の中で特別の意味を持った文字を、その文字そのものとして扱いたいので別の表現で表すこと」という感じでしょうか。 例:HTMLの中で < はタグの始まりを表すので、< と言う文字自体を表したければ < とエンコードする
お礼
回答ありがとうございました。 >クォートとエスケープは現状では同じ意味として使われています。 >本来は、 >クォート:「決まった文法の中で特別な意味を持った文字の特別な意味をなくしその文字そのものと扱いたい時に行うこと」 >エスケープ:「文字に元の意味で無い別の意味を与えるときに行うこと」 >と全く別なのですが。 この説明、大変分かりやすかったです。 参考になりましたー
- lupin-333333
- ベストアンサー率31% (294/933)
もう一つおまけ。 エンコードをネットで調べると http://search.yahoo.co.jp/search?p=%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt デジタル信号化、暗号化と言う意味であることが分かる。 暗号化(エンコード(符号か))、復号化(デコード) と言うこと。 しかし、 http://search.yahoo.co.jp/search?p=%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E9%96%A2%E6%95%B0&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt なんて検索すると、Wikiとは違う説明の話になる(だからと言ってそのページWikiは間違っているわけではない)。 そう、その分野では、違って使われる事が多いので、プログラム言語で言っているのか、映像などデジタル化での話しなのか文脈から判断するしかない。 http://www.phpbook.jp/func/string/index5.html http://pbs.darkgray.net/tips/tipshow.php?textserial=4 質問内容も、それぞれの単語の英語の意味で捉えてしまうと、みんな同じにみててくるが、ちゃんと、それぞれプログラム言語では、なにをすることが「クォート」「エスケープ」「エンコード」なのかネット上で調べれば、すぐわかることです。
お礼
追加説明、ありがとうございましたー
お礼
回答ありがとうございました。 >あっているといえば(通っている)、あっているし、違うといえば違う。 >その3つ、全部違う事です。似た場面で、同じ効果を持つので、同じように使われる事があるだけで、違う事を指しています。 >エンコードは、上記2つと全く違い、元の文字を特定の方式にしたがって、別の文字列に置き換える事をさします。効果としては、エスケープ効果にも役立ちます。 説明、大変分かりやすかったです。 勉強になりましたー