近期做一个轻型的网游项目,初次接触,在mina传输上遇到个头痛的问题,做下记录
在swing端各方面测试都没有问题,但在android客户端却怎么也接收不了服务器那边的消息
很是奇怪,从网络、ip等方面都有考虑来解决,但无果
最终发现英文的消息则能接收,中文则不行,接着开始着手编码相关问题
// 创建客户端连接器.
NioSocketConnector connector = new NioSocketConnector();
connector.getFilterChain().addLast( "logger", new LoggingFilter() );
connector.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory()));
结果确实是编码问题,最终加上编码过滤器来解决中文的支持
connector.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" )))); //设置编码过滤器
很二的错误,接触新的东西还是要多去了解了解才行呀。哎
另外后期制作中发现androd客户端发送中文,服务器又接收不到了,改了编码后 接收到的又是乱码
研究了好久最后使用转码来解决该问题:android客户端将中文信息用URLEncoder.encode(jsonObject.toString());进行转码发送,服务器用URLEncoder.encode对应进行解码。
虽然不知道有更好的方法来解决这个问题,但该方法也总算解决了中文问题