Link to home
Start Free TrialLog in
Avatar of EngBrunoMachado
EngBrunoMachado

asked on

Sending special characters to vb application TCP/IP

I am not so sure if I should post this in VB or C# forum - but let's see what happens...

I am building a simple client/server solution...
the server side I decided to build in C# (i need thread's and some other feturings that VB doesn't handle very well)...
the client side - a vb6 app... quite simple... the problem I got...

to send from C# to VB (sockets - TCP/IP) I do something like:
myTCP.Send(System.Text.Encoding.UTF8.GetBytes(Dados)); //Dados = string ie. "Test" or "Ligação"

VB receives the string and the data is not clear when sending characteres like "ç","é","ã"...
I searched for this and found that I would have to send from C# like:
myTCP.Send(System.Text.Encoding.Unicode.GetBytes(Dados));
but when I do this, I found a new problem - instead of getting "Ligação" > I receive something Like
L*i*g*a*ç*ã*o > * means (char)0 >>> or I don't receive the whole message...

I wonder how to send this special characteres (and they are very common) from C# to VB...
if I have no choice, I may create a simple "Convert Table" - Converting the "garbage" from the received message into the expected...

TIA
Bruno
ASKER CERTIFIED SOLUTION
Avatar of tomasX2
tomasX2

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of EngBrunoMachado
EngBrunoMachado

ASKER

BigEndianUnicode gives me the same problem I had with Unicode...

about VB "All VB strings are stored in UNICODE" (http://www.mvps.org/vb/index2.html?tips/varptr.htm)

when I use Encoding.Unicode at C# Server, it sends me 2 bytes instead of 1 (and I believe it is ANSI)...

hmmm...
it couldn't be more simple than that...
I was trying Unicode / UTF8...
and it was Default all the time...

I had to try them all after the BigEndian...
well... thx
good to know... had to be something obvious ;-)

so to know what the default is

      System.Text.Encoding enc = System.Text.Encoding.Default;

      System.Diagnostics.Debug.WriteLine(enc.EncodingName);
      System.Diagnostics.Debug.WriteLine(enc.HeaderName);
      System.Diagnostics.Debug.WriteLine(enc.WebName);
      System.Diagnostics.Debug.WriteLine(enc.BodyName);