• 締切済み

Vbscript Unicode文字の判定

今、テキストファイルがあり、その中には「Unicode文字」が含まれています。 タックシール(ダイレクトメール用)に出力するのに、マンション名やビル名は改行しなければなりません。 1行に印字できる文字数は全角で20文字(40バイト)です。 したがって、「住所1」と「住所2(マンションやビル名)」の正確なバイト数を調べるのですが、今、「Unicode」のテキストファイルを作って、確かめたところ、半角文字は、そのまま「Asc()」で正の整数で返ってきます。 また、通常の2バイト文字(全角スペースから外字の最終文字)までは、負の整数で返ってきました。 しかし、「Unicode」文字は、常に「63」で返ってきます。 Character Code「63」は、半角の「?」です。 どうやら、「VBScript」は「Unicode」文字をすべて「?」として認識してしまうようです。 通常は、住所に「?」はないはずなのですが、最近、お客様のデータを見ていると、半角の「-」が、よく、半角の「?」に化けているので、「?」はちゃんと1バイトとして、Unicodeの文字は2バイトとして調べなければなりません。 VBAのように「Len()」と「LenB()」があれば、問題ないのですが、「VBScript」では、正しく動作しません(すべて「2」と返してきます)。 正確に文字数(バイト数)を調べるには、どうすればよいのでしょうか?

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

この質問で書かれているUnicode文字というのは何の事でしょうか? テキストファイルの文字コードはShift_JISなのに、何故か紛れ込んでいる文字コードがUnicodeな文字という事ですか?

Prome_Lin
質問者

お礼

サイトで、 Function u(b) l = 0 If Trim(b) <> "" Then For i = 1 To Len(b) s = Mid(b, i, 1) If (Asc(s) And &HFEFF) <> 0 Then l = l + 2 Else l = l + 1 End If Next End If End Function というものを見つけました。 半角文字を「1」、Shift-JISの範囲の漢字も「Unicode」にしかない漢字も「2」とカウントしてくれたのですが、半角と全角のスペースは「0」とカウントしてしまいました。

Prome_Lin
質問者

補足

テキストファイルのファイルフォーマットは「Unicode」です。 より、正確には「Unicode BOM付き(改行CR+LF)」です。 そのファイルの中にある、シフトJISの範囲内の文字を「シフトJIS」と表記しました。 例えば「あ」や「漢」などを「シフトJIS」文字と言う意味です。 「𣃐」のように、「Unicode」にしかない文字を「Unicode文字」と表記しました。 まぎらわしい表現で申し訳ございません。

関連するQ&A