半角全角混じりの文字列のバイト数を取得するには?

解決


mikey  2003-12-06 00:41:09  No: 110500

Set bobj = CreateObject("basp21")
bbb = "aaa"
MsgBox LenB(bobj.StrConv(bbb, vbFromUnicode))

を実行すると「6」と表示されます。
3だと思ってたのですがどうしてでしょうか?


nanashi  2003-12-06 00:55:46  No: 110501

なんでVB標準のStrConvを使わないのでしょうか??

    MsgBox LenB(StrConv(bbb, vbFromUnicode))

ちなみにvbFromUnicodeは128。
Basp21では128は使われていないようですが……。
http://www.hi-ho.ne.jp/babaq/basp21.html#0022


mikey  2003-12-06 01:03:50  No: 110502

VB標準のStrConvを使うというのがよく分からないです。。
書き忘れていましたが、VBScriptで実行しようとしています(関係ないかもしれませんが)。
    MsgBox LenB(StrConv(bbb, vbFromUnicode))
をやったら
型が一致しません。:'StrConv'
のエラーが出ました。


魔界の仮面弁士  2003-12-06 02:16:50  No: 110503

VBScriptで、文字列の(Shift_JIS換算の)バイト数を得る方法は幾つかありますが、
BASP21が使えるのであれば、Kconvあたりを使うのが簡単でしょう。

> VB標準のStrConvを使うというのがよく分からないです。。
VBScriptには、StrConv関数はありません。それゆえに、
その関連定数たる vbFromUnicode も未定義となります。

> MsgBox LenB(bobj.StrConv(bbb, vbFromUnicode))
> を実行すると「6」と表示されます。
Option Explicitを宣言していますか?

VBScriptには、vbFromUnicode という定数が用意されていないため、
DimやConst無しで vbFromUnicode を利用した場合、(Option Explicitが無ければ)
それが新たな変数として自動生成され、値は Empty として扱われます。


nanashi  2003-12-06 02:18:30  No: 110504

※環境は明記して下さい。

VB6.0を前提として答えました。

VBScriptにはStrConv関数はありません。
エラーが出てるのは当然ですね。
ちなみに私はVBScriptはあんまり知らないんでパスします。


mikey  2003-12-06 03:45:43  No: 110505

環境を書いていませんでした。ごめんなさい。
Windows XP
VBScript 5.6
です。

とりあえずできました。有難うございます。
↓のようにしました。Option Explicitも書いていなかったです。

Option Explicit
Dim bobj
Set bobj = CreateObject("basp21")
Dim bbb
bbb = "aaa"
MsgBox LenB(bobj.KConv(bbb, 1, 5))

変換前の漢字コードで
UCS2にするかUTF-8にするか良く分からなく
UTF-8にしたのですが、
とりあえず解決しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加