none
文字列リテラル中の全角二重引用符「”」について RRS feed

  • 質問

  • はじめて書き込みさせていただきます。Tai-Dと申します。

     

    VisualStudio2005で、VBでのASP.NETを開発している際に遭遇したのですが

     

    dim a as string = "私は”Tai”です"

    のように、2個の半角二重引用符""で括られた文字列リテラルの中にに「”」という

    全角の二重引用符を入れると、以下のような症状が発生しました。

     

    症状その①開発環境によって「”」→「""」のように、2個の半角二重引用符に変換されてしまう。

    dim a as string = "私は""Tai""です"

     

    症状その②変換されないようにEdit→即ビルドしても、ビルド時に

    dim a as string = "私は”Tai”です"

    という認識が行われて、シンタックスエラーになってしまう。

     

    個人的に、VB6の利用経験が長かったせいもあり衝撃を受けています。

     

    みなさまにアドバイスいただきたいのは以下の2点です

    質問その①この事実について、MSDNやブログなどで言及されているドキュメントをご存知ありませんか?

           いろいろな検索エンジンで自力で検索を行ってみましたが発見出来ませんでした。

    質問その②文字列リテラル中に「”」を含める方法は、たとえば「ChrW」のような関数を

           利用するしかないでしょうか?何かエスケープ方法があればご教授いただきたいです。

     

    片方だけでも構いませんのでアドバイスのほど、よろしくお願いします。

     

    2007年4月10日 2:38

回答

  •  Tai-D さんからの引用
    症状その①開発環境によって「”」→「""」のように、2個の半角二重引用符に変換されてしまう。
    dim a as string = "私は""Tai""です"
    症状その②変換されないようにEdit→即ビルドしても、ビルド時に
    dim a as string = "私は”Tai”です"
    という認識が行われて、シンタックスエラーになってしまう。

    個人的に、VB6の利用経験が長かったせいもあり衝撃を受けています。

    VB6 でも実行時エラーになりますので、根本的には同じですよ。
    これらは、Chr$ を使って文字コードから文字を生成するか、または定数型と組み合わせてて回避するのが一般的です。

    VB6 でもこのように回避していたハズです。

    質問その②文字列リテラル中に「”」を含める方法は、たとえば「ChrW」のような関数を利用するしかないでしょうか?何かエスケープ方法があればご教授いただきたいです。

    定数 + ChrW を使えばそれほど気になりませんが、何か気になるのでしょうか?

    2007年4月10日 6:03

すべての返信

  •  Tai-D さんからの引用
    症状その①開発環境によって「”」→「""」のように、2個の半角二重引用符に変換されてしまう。
    dim a as string = "私は""Tai""です"
    症状その②変換されないようにEdit→即ビルドしても、ビルド時に
    dim a as string = "私は”Tai”です"
    という認識が行われて、シンタックスエラーになってしまう。

    個人的に、VB6の利用経験が長かったせいもあり衝撃を受けています。

    VB6 でも実行時エラーになりますので、根本的には同じですよ。
    これらは、Chr$ を使って文字コードから文字を生成するか、または定数型と組み合わせてて回避するのが一般的です。

    VB6 でもこのように回避していたハズです。

    質問その②文字列リテラル中に「”」を含める方法は、たとえば「ChrW」のような関数を利用するしかないでしょうか?何かエスケープ方法があればご教授いただきたいです。

    定数 + ChrW を使えばそれほど気になりませんが、何か気になるのでしょうか?

    2007年4月10日 6:03
  • >VB6 でも実行時エラーになりますので、根本的には同じですよ。

     

    なんと、、、とても大きな思い違いをしていたようです。確かにそうなっていますね。

    大変お恥ずかしいです。

     

    >定数 + ChrW を使えばそれほど気になりませんが、何か気になるのでしょうか?

     

    他に方法がないことがわかりましたので、この方法をとらせていただきます。

    MSDNなどのドキュメントでは、半角二重引用符についての言及しかないので

    どこかで明言されていない仕様なのだろうか?という疑問があり、質問させていただいた次第です。

     

    そもそも、VB6と違う仕様ではないか?という疑いがこちらの思い違いだったので

    この件は、クローズとします。

     

     素早いレスありがとうございました

     

    2007年4月10日 6:48