设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
123
返回列表 发新帖
楼主: 淡竹叶
打印 上一主题 下一主题

BRAC_TransBufferEx传输数据乱码

[复制链接]

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
21#
 楼主| 发表于 2015-10-18 21:35:12 | 只看该作者
佰锐科技-李友勤 发表于 2015-10-18 20:07
您好,您的数据是怎样接收的呢?请将相关代码贴上来分析下。
您前面说jsp环境,是不是说您的页面是在部 ...

项目部署在tomcat中,在jsp页面上<%@ page language="java" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="${ctx }/js/main.js" charset="UTF-8"></script>
项目中
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

这时候mainjs发送文字:
//dwUserId为o表示发送给服务器
        var errorcode = BRAC_TransBufferEx(0,getVal,mTargetUserId,TYPE_TXT,0);
        //发送给用户端
        var errorcode2 = BRAC_TransBufferEx(mTargetUserId,getVal,mTargetUserId,TYPE_TXT,0);

通过BRAC_TransBufferEx(0,,,第一个参数为0发服务端,
此时服务端
    public void OnAnyChatTransBufferEx(int dwUserId, byte[] lpBuf, int dwLen, int wParam, int lParam, int dwTaskId) {
        try {
            //保存发送的消息到服务器中
            String msg = new String(lpBuf, "UTF-8");
            String msg2 = new String(lpBuf, "GBK");

msg乱码,而msg2正常。。
var errorcode2 = BRAC_TransBufferEx(mTargetUserId,getVal,mTargetUserId,TYPE_TXT,0);发给IOS端,那边接收到的二进制转化为字符串(utf-8)也是乱码的
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
22#
 楼主| 发表于 2015-10-18 21:38:43 | 只看该作者
佰锐科技-李友勤 发表于 2015-10-18 20:07
您好,您的数据是怎样接收的呢?请将相关代码贴上来分析下。
您前面说jsp环境,是不是说您的页面是在部 ...

您好,另外,,web端给ios端发送透明扩展通道,这应该是p2p的长链接吧,,和服务器有关系么,和核心服务有关么,核心服务应该也不会影响传输的字符编码
回复 支持 反对

使用道具 举报

23#
发表于 2015-10-18 22:01:13 | 只看该作者
本帖最后由 佰锐科技-邵光清 于 2015-10-18 22:08 编辑
淡竹叶 发表于 2015-10-18 21:38
您好,另外,,web端给ios端发送透明扩展通道,这应该是p2p的长链接吧,,和服务器有关系么,和核心服务 ...

您好,AnyChat SDK不理会使用透明通道扩展传送的数据编码;另外BRAC_TransBufferEx是使用UDP发送数据,不保证发送顺序和接收顺序相同,但保证能收到。请问您是什么业务场景需要在房间外使用缓冲区传输数据呢?
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
24#
 楼主| 发表于 2015-10-19 08:33:50 | 只看该作者
佰锐科技-邵光清 发表于 2015-10-18 22:01
您好,AnyChat SDK不理会使用透明通道扩展传送的数据编码;另外BRAC_TransBufferEx是使用UDP发送数据,不 ...

部分代码已贴上,,我们是嵌在app里面的,web端一对多,,只要上线就能与其对话
回复 支持 反对

使用道具 举报

25#
发表于 2015-10-19 09:10:24 | 只看该作者
淡竹叶 发表于 2015-10-19 08:33
部分代码已贴上,,我们是嵌在app里面的,web端一对多,,只要上线就能与其对话

您好,如你1楼所述,ios端你也应该使用 "GBK"编码来处理透明数据,透明通道其实就是一个数据的管道,你在发送端是什么编码,在接收端也需要这样的编码,这样才不会出现乱码。
回复 支持 反对

使用道具 举报

26#
发表于 2015-10-19 09:26:35 | 只看该作者
淡竹叶 发表于 2015-10-19 08:33
部分代码已贴上,,我们是嵌在app里面的,web端一对多,,只要上线就能与其对话
此时服务端
    public void OnAnyChatTransBufferEx(int dwUserId, byte[] lpBuf, int dwLen, int wParam, int lParam, int dwTaskId) {
        try {
            //保存发送的消息到服务器中
            String msg = new String(lpBuf, "UTF-8");
            String msg2 = new String(lpBuf, "GBK");

msg乱码,而msg2正常。。


您好,这一段说明您的utf-8编码没有成功?您把页面以及js的utf-8统一换成大写或者小写试试看。
前面说的服务器是指web服务器,具体来说是serverlet里面的service中需要指定请求对象的字符集,否则默认都是以8859-1编码,不过您的gbk能成功说明应该不是这个问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-9-27 17:14 , Processed in 0.137852 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表