中文乱码产生的原因就是从GBK转到UTF-8,或者是不同的编码格式来回转,导致byte[]中存放的字节丢失。
思路是:在客户端进行传输前,将需要传输的字节,以一个编码方式进行传输,假设设置GBK,之后在服务端接收到后,先使用new String(byte,“GBK”);去接收,这样只要保证传输时候设置的编码格式和接收的时候设置的编码格式就不会乱码。
案例:对方要发报文,报文头中存在编码格式
解决方案:
public static String getCharsetName(byte[] bytes) {
byte[] cloneBytes = bytes.clone();
String xmlMessage = null;
try {
xmlMessage = new String(cloneBytes, "GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String xmlHeader = null;
if (xmlMessage != null) {
xmlHeader = xmlMessage.substring(0, 100);
}
if (xmlHeader != null) {
if (xmlHeader.contains("UTF-8") || xmlHeader.contains("utf-8")) {
return "UTF-8";
}
if (xmlHeader.contains("GBK") || xmlHeader.contains("gbk")) {
return "GBK";
}
if (xmlHeader.contains("GB2312") || xmlHeader.contains("gb2312")) {
return "GB2312";
}
}
// 否则默认返回GBK编码格式
return "GBK";
今天的文章java socket 传文件_java知识「建议收藏」分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/58239.html