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

http://www.microsoft.com/japan/msdn/vbasic/migra …

上記サイトのVB.NETのサンプルを動作させてみたところ
2バイト文字を送信すると

閉じ括弧”」”以降の文字が表示されません。
半角文字だとちゃんと表示されます。

プログラムの動作を追ったところ

strReceivedData に入っているデータが
2バイト文字を使用すると

例・・・ああああ を送信したとき

"ああああ

というデータになっているようでその関係で表示が崩れるみたいです。
ためしに表示の直前で strReceivedData のデータを編集し

"ああああ"

とするとちゃんと閉じ括弧以降も表示されました。

どうして2バイト文字が入ると受信データの閉じの " が消えるのでしょうか?

A 回答 (1件)

サーバー側の文字列構築部分に問題があるようです



Substringが文字数で引数を管理しているのに、与えられるのがソケットから読み込んだバイト数になっているのでおかしくなるようです

直接構築するのではなく 1クッションおいたほうがいいようです

Dim ss as String = System.Text.Encoding.Default.GetString(bytReceiveBuffer)
if ss.IndexOf( chr(0) ) > -1 then
  ss = ss.Left( 0, ss.IndexOf( chr(0) ) )
end if
strReceivedData &= ss

といった具合でしょう

または Encodingする文字列をByte配列のどの範囲かを指定して文字列化します

strReceivedData &= System.Text.Encoding.Default.GetString(bytReceiveBuffer).Substring(0, intReceiveLength)
のGetStringで範囲を絞ってしまいます
strReceivedData &= System.Text.Encoding.Default.GetString(bytReceiveBuffer, 0, intReceiveLength)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

前者のほうをやろうとすると

'Left'は'String'のメンバではありません。
というエラーになるようで動作は見れませんでしたが、

後者のほうで実行すると

ちゃんと2バイト文字が混じっていても表示が正しくなりました。
ありがとうございました。

お礼日時:2008/04/30 09:18

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