android java socket通信乱码

android java socket通信乱码android默认socket通信编码是utf8,这时为了支持多国家。国内预装的windows操作系统编码是GB2312,一般在PC机编写的应用程序并且运行在该PC机上如果没有特意指定编码都是GB2312。不同的编码如果传输的是英文字母等不会出现乱码,如果是汉字就是乱码utf8中汉字的表示方法为3个字节例如汉字“啊”,GB2312编码为 B0A1    utf8编

大家好,欢迎来到IT知识分享网。android

android默认socket通信编码是utf8,这时为了支持多国家。

国内预装的windows操作系统编码是GB2312,一般在PC机编写的应用程序并且运行在该PC机上如果没有特意指定编码都是GB2312。

不同的编码如果传输的是英文字母等不会出现乱码,如果是汉字就是乱码

utf8中汉字的表示方法为3个字节

例如汉字“啊”,GB2312编码为  B0 A1

       utf8编码为 E5 95 8A 

一般来讲,一个汉字的编码可以这样获取

String s = "啊";
byte[] b = s.getBytes("GB2312");

这样b数组中存的就是汉字”啊“的gb2312编码,即
E5 95 8A。

实际通信中,可以利用BufferedReader实现自动转码

Socket mSocketClient = new Socket();
BufferedReader mBufferedReaderServer = null;
BufferedReader mBufferedReaderClient = null;

mBufferedReaderClient = new BufferedReader(new InputStreamReader(mSocketClient.getInputStream(),"GB2312"));

mPrintWriterClient = new PrintWriter(new BufferedWriter(new OutputStreamWriter(mSocketClient.getOutputStream(),"gb2312")), true);



免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22593.html

(0)
上一篇 2023-12-30 07:33
下一篇 2023-12-31 07:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信