アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは

VBAで文字列を処理するプログラムを書いていますが、シングルクオート(8217)が使えずに困っています。シングルクオートを出そうとすると全角のアポストロフィのような文字になって、8217になりません。

どうしたらよいでしょうか。
Windows 7 Pro 64bit

質問者からの補足コメント

  • どうやら、文字コード 8166 のクオート(アポストロフィ?)になっているようです

      補足日時:2015/08/07 18:34

A 回答 (3件)

(右)シングルクオートと全角のアポストロフィーは同じものです。


その文字コードはUnicodeで8217(十進)、Shift_JISで8166(16進)です。

フォントを変えるか、ASCII領域にある左右の区別のないシングルクオート「'」を使ってはいかがでしょう。
    • good
    • 1
この回答へのお礼

データベースに Unicode 8217 (十進)の右シングルクオートが含まれていた場合に、それが正しい値で処理されていないようです。8166というのは、あれこれ調べているうちに目撃したShift_JISの16進数コードのようでした。つまり、プログラムコード上は正しく処理されていて、その先の .exe に渡した内部であやまって扱われているのではないかと思います。

.exe はずいぶん前に私がやっつけ感満載でCで書いたので、内容を見直すのは難しそうです。.exe にも文字コードとかあるんですかね。コンパイル前に書いた main.c は Shift_JIS になっていました。

お礼日時:2015/08/08 04:59

>VBAで文字列を処理するプログラムを書いていますが


というのは、Excelの話ですか?
他にWordなのか、PowerPoint なのかとか、いろいろあります。

>シングルクオート(8217)が使えず
たぶん、おっしゃっている話は、左シングルクオートと右シングルクオートのセットにならないというような話ではないかと思います。

ただ、一応、プログラミングの話だと思いますが、コードの方はどうなっているのかよく分かりません。もしExcelでセルに入力する場合は、最初に、文字列を入れようとして、全角のsingle quote を使うと、半角に変わって、prefix character として、書式制御文字になってしまいます。ですから、最初のひとつは、半角single quote を捨て文字として使わなくてはなりません。
    • good
    • 0
この回答へのお礼

いろいろ調べた結果、Cで書いた.exeの中で 8127 の文字が2文字として計算されているところに誤りがあるような気がしています。

strlen で長さを取っているのですが、これを改める必要がありそうです。どうすれば良いのかはこれから調べます。

お礼日時:2015/08/08 05:21

シフトJISの8166が、右シングルクォート「’」なので、おそらく8217もシフトJISコードの意図で書いてるのでしょうが、シフトJISにそういうコードは無いです。

タイプミスでしょうか?また、シングルクォートじゃないシングルクォートというのも、よく分かりません。どの文字のことでしょうか?
    • good
    • 0
この回答へのお礼

ややこしいので敢えて書きませんでしたが、しっかり書くべきでしたね。

実際のプログラムはこういう流れです。

.vbs ファイルがメインのコードで、このコードが .mdb ファイルからテキストデータを吸い出します。吸い出した後、簡単な .exe にテキストデータを渡して、文字コードを基にしてハッシュ値を生成して返します。この動作は、ある既成のソフトウェアの動作を模倣したものです。

このとき、.mdb に右シングルクオートが含まれていると、正しいハッシュ値が得られないという問題があって困っていました。つまり、既成のソフトウェアではシングルクオートのみを渡した場合は8217として扱われるのに、自作のコードでは異なる値となっていたのです。

で、上記のプロセスがやや複雑なので、テスト環境としてエクセルのvbaとテキストファイル1枚のtest.vbsを使って実験していたのです(結果は同様に失敗しています)。

お礼日時:2015/08/08 04:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!