2 z15918320 z15918320 于 2016.03.20 23:01 提问

netty服务端接收到中文通信乱码问题

不多说 问题如题
以下是服务端代码
public void channelRead(ChannelHandlerContext ctx, Object msg) {
try {
ByteBuf buf = (ByteBuf) msg;
byte[] req = new byte[buf.readableBytes()];
buf.readBytes(req);
String body = new String(req, "UTF-8");
System.out.println("服务器接收到消息:" + body);
ctx.writeAndFlush(getSendByteBuf("服务器发送的数据APPLE"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}

private ByteBuf getSendByteBuf(String message) throws UnsupportedEncodingException {

    byte[] req = message.getBytes("UTF-8");
    ByteBuf pingMessage = Unpooled.buffer();
    pingMessage.writeBytes(req);

    return pingMessage;
}

以下是客户端代码
public void channelActive(ChannelHandlerContext ctx) throws Exception {
byte[] data = "服务器,给我一个APPLE".getBytes();
firstMessage=Unpooled.buffer();
firstMessage.writeBytes(data);
ctx.writeAndFlush(firstMessage);

}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg)
throws Exception {
ByteBuf buf = (ByteBuf) msg;
String rev = getMessage(buf);
System.out.println("客户端收到服务器数据:" + rev);
}
private String getMessage(ByteBuf buf) {
byte[] con = new byte[buf.readableBytes()];
buf.readBytes(con);
try {
return new String(con, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}

如需要更详细代码请回复跟帖  我跟帖告诉

2个回答

u012155923
u012155923   2016.03.20 23:27

编码统一强转为uyf8

z15918320
z15918320 您好 请问在客户端这边我如何转转咧?
2 年多之前 回复
qq_23018915
qq_23018915   2016.03.21 17:52

使用.getBytes("UTF-8);

qq_23018915
qq_23018915 回复长沙大猫: public void channelActive(ChannelHandlerContext ctx) throws Exception { byte[] data = "服务器,给我一个APPLE".getBytes(); firstMessage=Unpooled.buffer(); firstMessage.writeBytes(data); ctx.writeAndFlush(firstMessage); 这里没加吧,都要转编码
2 年多之前 回复
z15918320
z15918320 有用到的啊 但是没有效果啊
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
解决网络通信中的中文乱码问题(Java)
编程中,中文就意为着麻烦,特别是网络通信中,可能会遇到中文乱码的问题,想要解决Java中文乱码的问题,首先说一下字符,字符集,编码的概念.字符:文字与符号的总称,包括文字,图形符号,数学符号等. 字符集:是一组抽象字符的集合,通常和一种具体的语言文字对应,该文字中所有的字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集,繁体字符集,日文字符集等. 字符编码:计算机中处理各种字符,需要将
http 请求服务器收到中文乱码问题
开发环境测试没有问,发布到测试环境时中文乱码导致数据查找返回空, web.xml中设置了utf-8编码的过滤器但是还是乱码, 需要在Tomcat 的server.xml 中添加下面红色部分 <Connector port="9091" protocol="HTTP/1.1"               connectionTimeout="20000"               redir
Netty服务端与客户端依靠Java序列化传输数据
Netty服务端与客户端依靠Java序列化传输数据
Node.js UDP服务器无法收到客户端消息
Node.js UDP服务器无法收到客户端消息          在《Node.js开发实战详解》这本书的第四章里,在架设Node.js服务器后,运行客户端程序,服务器无法收到消息。server.jsvar dgram = require('dgram'); var server = dgram.createSocket('udp4'); server.on('listening', funct
Netty查看收到的数据
原文地址:http://netty.io/wiki/user-guide-for-4.x.html Looking into the Received Data Now that we have written our first server, we need to test if it really works. The easiest way to test it is to u
服务器接收到的请求参数乱码问题
在java中用tomcat做服务器开发乱码问题 客户端向服务器发送HTTP请求,通过get方式发送的请求,在服务器接收到的数据都乱码了。 首先我们会想到客户端发送数据时候指定编码,比如为UTF-8 我们同时指定服务器Myeclipse的编码也为UTF-8 但还是乱码。。。,其中,还有个地方比较关键,没有指定编码,那就是tomcat,tomcat也需要指定编码
Qt5下socket传输中文字符乱码的问题
Qt5下socket传输中文字符乱码的问题先贴代码server端部分代码QString msg = TextEdit->toPlainText(); qDebug()<<msg<<endl; qDebug()<<msg.toLocal8Bit()<<endl; qDebug()<<msg.toLocal8Bit().length()<<endl; int length = 0; if(msg==""
使用Tomcat——表单中的中文服务端接收到为乱码
网页一般都是用UTF-8编码,而傻缺的Tomcat默认的解码却是ISO。把UTF-8的码用ISO来解当然会乱码。所以,需要在Tomcat的Server.xml上配置解码方式。 在server.xml中,找到更改为: 重启服务器,问题解决。
HTTP简单的客户端与服务器交互
简单实现了客户端发送请求 服务端接收到并返回数据
C# : Socket 接收中文显示乱码的解决办法
由 Programming C# 3.0 示例改编 AsyncNetClient.cs