Set bobj = CreateObject("basp21")
bbb = "aaa"
MsgBox LenB(bobj.StrConv(bbb, vbFromUnicode))
を実行すると「6」と表示されます。
3だと思ってたのですがどうしてでしょうか?
なんでVB標準のStrConvを使わないのでしょうか??
MsgBox LenB(StrConv(bbb, vbFromUnicode))
ちなみにvbFromUnicodeは128。
Basp21では128は使われていないようですが……。
http://www.hi-ho.ne.jp/babaq/basp21.html#0022
VB標準のStrConvを使うというのがよく分からないです。。
書き忘れていましたが、VBScriptで実行しようとしています(関係ないかもしれませんが)。
MsgBox LenB(StrConv(bbb, vbFromUnicode))
をやったら
型が一致しません。:'StrConv'
のエラーが出ました。
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 として扱われます。
※環境は明記して下さい。
VB6.0を前提として答えました。
VBScriptにはStrConv関数はありません。
エラーが出てるのは当然ですね。
ちなみに私はVBScriptはあんまり知らないんでパスします。
環境を書いていませんでした。ごめんなさい。
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にしたのですが、
とりあえず解決しました。
ツイート | ![]() |