当前位置: 技术问答>java相关
真的很急,socket发送中文信息时,接收端显示有误,请指教
来源: 互联网 发布时间:2015-06-01
本文导语: applet用udp传输中文文本和接收显示,我用了以下几种转换都不行: 发送端和接收端都不转换是不行的, 发送端转换成ISO8859_1,接收端转换成GB2312和不转换都不行。 应该怎么转换,请指教! | ...
applet用udp传输中文文本和接收显示,我用了以下几种转换都不行:
发送端和接收端都不转换是不行的,
发送端转换成ISO8859_1,接收端转换成GB2312和不转换都不行。
应该怎么转换,请指教!
发送端和接收端都不转换是不行的,
发送端转换成ISO8859_1,接收端转换成GB2312和不转换都不行。
应该怎么转换,请指教!
|
发送端:
String s = "";
byte[] data = s.getBytes( "UTF8" );
然后把data发出去
接受端:
byte[] data = ...; //接受到的数据
String s = new String( data, "UTF8" );
String s = "";
byte[] data = s.getBytes( "UTF8" );
然后把data发出去
接受端:
byte[] data = ...; //接受到的数据
String s = new String( data, "UTF8" );
|
是不是发送之前就是乱码?
试试
msgTxt=new String (msgTxt.getBytes("ISO-8859-1"),"gb2312");
如果都不行的话,我想问一下,你传输的信息是二进制流还是字符串信息?
如果是byte[]数据流的话,看看在发送之前的将字符串换成byte[]对不对
很可能在这里因为中文字符的length等原因转错了
试试
msgTxt=new String (msgTxt.getBytes("ISO-8859-1"),"gb2312");
如果都不行的话,我想问一下,你传输的信息是二进制流还是字符串信息?
如果是byte[]数据流的话,看看在发送之前的将字符串换成byte[]对不对
很可能在这里因为中文字符的length等原因转错了
|
你的问题应该分为两部分.
1.String ->byte[] ,byte[] -> String (编码相关)
2.数据传输.其中最好不要与编码相关.
你可先在本地把String用编码转为byte[],再相应转回来,看行不行.
行了在做传输的工作,保证传的和接收的一致.
1.String ->byte[] ,byte[] -> String (编码相关)
2.数据传输.其中最好不要与编码相关.
你可先在本地把String用编码转为byte[],再相应转回来,看行不行.
行了在做传输的工作,保证传的和接收的一致.
|
你能否保证两边的接收和发送中对待发数据流的处理是相同的么?
另外
如果真的做了byte[] -> String 和 String -> byte[]的转换的话,千万要注意在java里面,中文字符虽然是两个字节,但是它的长度(在String.length()中)却还是1,所以一个中文字符必须用两个byte来存放,但转换的时候若不小心就会失真。
我第一次处理这方面的数据时,就出过错。
另外
如果真的做了byte[] -> String 和 String -> byte[]的转换的话,千万要注意在java里面,中文字符虽然是两个字节,但是它的长度(在String.length()中)却还是1,所以一个中文字符必须用两个byte来存放,但转换的时候若不小心就会失真。
我第一次处理这方面的数据时,就出过错。
|
我建议转换成字节流传。服务器还是VC写的了,受到的就是中文。