- ベストアンサー
VBで全角文字をバイト参照する方法
- VBでテキストから参照した全角文字を一バイトずつのエリアに設定する方法を教えてください。
- 取得した値をVB(Windows?)が正しく認識できないため、文字化けしてしまいます。
- どのようにすれば内容を壊さずに全角文字を取得できるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
なるほど・・・ 以前に何度かここの掲示板で似たようなものを載せてるので、それを一行にまとめた関数を書いておきます。 Sub Main() MsgBox fixStr("12345678901234567890", 4, 10) MsgBox fixStr("12345ああ6789ああ01ああ234567890", 4, 10) MsgBox fixStr("うううううう12345678901234567890", 4, 10) End Sub '引数1:文字列 '引数2:開始バイト目 '引数3:バイト長 Private Function fixStr(inStrings As String, inByteStart As Long, inByteLen As Long) As String fixStr = StrConv(MidB(StrConv(inStrings, vbFromUnicode), inByteStart, inByteLen), vbUnicode) End Function
その他の回答 (2)
- todo36
- ベストアンサー率58% (728/1234)
byte配列に変換した方がやりやすい Dim b() As Byte b = StrConv(txtInput, vbFromUnicode)
お礼
それは質問内容にも書いてあるとおりですよね・・・ し、しまったスペルを間違えてる ×:FromUnicode ○:vbFromUnicode 失礼しました^^
- TAGOSAKU7
- ベストアンサー率65% (276/422)
何がしたいのかが良くわかりません。 2バイト文字の情報を1バイトに分割してどうするのですか? 文字情報が壊れるのは当然ですよ。 分解して得た情報 [strBuff1] と [strBuff2] から「西」という文字を作成したいのですか? どのような結果を求めているのかがわかりません。
補足
説明不足でしたか? 結論から言うと半角全角混在のエリアを10バイトずつで切った情報にしたい と言う事なのですが、PCと汎用機とのデータ移動のためのツールを作成しています
お礼
どれどれ、早速試してみよう・・・ ・・・お~本当だ! 上手く行きました。 そうですね、Unicode変換して元に戻してあげないと行けないんですね うっかりしてました^^ とても助かりました、有難う御座います!