设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
楼主: 淡竹叶
打印 上一主题 下一主题

BRAC_TransBufferEx传输数据乱码

[复制链接]

0

主题

213

帖子

762

积分

高级会员

Rank: 4

积分
762
11#
发表于 2015-10-17 14:37:14 | 只看该作者
淡竹叶 发表于 2015-10-17 13:53
您好,ios端没有gbk,用的是uft-8;而在web端,我的jsp指定的编码是utf-8,你们web端的回调事件中的缓冲 ...

您好,透明通道的数据类型没有限制,数据的编码可以在函数中进行自定义的,anychat内核不会对编码进行转换的。
透明通道传输的数据类型也是上层业务自行定义的。anychat不会进行任何处理。可以参考什么是透明通道,如何使用?
您所使用的web端是您自己所写的吗?

回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
12#
 楼主| 发表于 2015-10-17 16:02:59 | 只看该作者
佰锐科技-李友勤 发表于 2015-10-17 14:37
您好,透明通道的数据类型没有限制,数据的编码可以在函数中进行自定义的,anychat内核不会对编码进行转 ...

您好,是的,web端是我写的,我的回调事件中拿的是字符串,没有指定编码格式,我的jsp环境指定了utf-8的编码格式。
ios端回调事件中拿到的二进制数据,转化为字符串时指定utf-8格式,中文会出现乱码,英文数字则正常。
ios端以utf-8格式发送内容到web端,web端的回调事件直接拿到缓冲区地址内容,英文正常,中文乱码,
你们anychat采用tcp通信时web端的编码格式以什么为主,不能配置编码格式的么
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
13#
 楼主| 发表于 2015-10-17 16:04:17 | 只看该作者
佰锐科技-李友勤 发表于 2015-10-17 14:37
您好,透明通道的数据类型没有限制,数据的编码可以在函数中进行自定义的,anychat内核不会对编码进行转 ...

我的意思是web端在anychat长连接通信的通道中的编码格式以什么为主
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
14#
 楼主| 发表于 2015-10-17 16:06:04 | 只看该作者
佰锐科技-李友勤 发表于 2015-10-17 14:37
您好,透明通道的数据类型没有限制,数据的编码可以在函数中进行自定义的,anychat内核不会对编码进行转 ...

您说的数据的编码可以在函数中进行自定义的,anychat提供指定编码格式的api?
回复 支持 反对

使用道具 举报

15#
发表于 2015-10-17 16:14:37 | 只看该作者
淡竹叶 发表于 2015-10-17 16:02
您好,是的,web端是我写的,我的回调事件中拿的是字符串,没有指定编码格式,我的jsp环境指定了utf-8的 ...

您好,
您好,是的,web端是我写的,我的回调事件中拿的是字符串,没有指定编码格式,我的jsp环境指定了utf-8的编码格式。
ios端回调事件中拿到的二进制数据,转化为字符串时指定utf-8格式,中文会出现乱码,英文数字则正常。

这里如果用gbk解码,能否正常呢?
ios端以utf-8格式发送内容到web端,web端的回调事件直接拿到缓冲区地址内容,英文正常,中文乱码,

这里也说明web解码不支持中文,可以查看下浏览器此时是采用什么字符集解码的。
你们anychat采用tcp通信时web端的编码格式以什么为主,不能配置编码格式的么

anychat提供的是数据传输的通道,对于数据的类型与内容没有任何干扰的。上面给您分享的其他客户的代码里面也可以看到他就是自己定义的utf-8编码。
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
16#
 楼主| 发表于 2015-10-18 19:25:04 | 只看该作者
佰锐科技-李友勤 发表于 2015-10-17 16:14
您好,
这里如果用gbk解码,能否正常呢?

ios端和服务端回调函数都是byte数组,js端的回调函数中是string,,能否告知怎么转换的
回复 支持 反对

使用道具 举报

17#
发表于 2015-10-18 19:52:23 | 只看该作者
淡竹叶 发表于 2015-10-18 19:25
ios端和服务端回调函数都是byte数组,js端的回调函数中是string,,能否告知怎么转换的

您好,透明传输通道扩展的回调函数返回的都是缓冲区地址,各个平台都一样的,如果需要在不同平台之间传输中文字符,最好使用文字聊天API接口BRAC_SendTextMessage
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
18#
 楼主| 发表于 2015-10-18 19:56:29 | 只看该作者
佰锐科技-邵光清 发表于 2015-10-18 19:52
您好,透明传输通道扩展的回调函数返回的都是缓冲区地址,各个平台都一样的,如果需要在不同平台之间传输 ...

由于文字聊天API接口BRAC_SendTextMessage需要进入房间操作,而我们的需求是不进入房间能够文字聊天的。
回复 支持 反对

使用道具 举报

19#
发表于 2015-10-18 20:07:31 | 只看该作者
淡竹叶 发表于 2015-10-18 19:56
由于文字聊天API接口BRAC_SendTextMessage需要进入房间操作,而我们的需求是不进入房间能够文字聊天的。

您好,您的数据是怎样接收的呢?请将相关代码贴上来分析下。
您前面说jsp环境,是不是说您的页面是在部署的容器里呢?
如果是这样的话,页面的数据交给服务器,在客户端浏览器以页面指定编码转给服务器以后,目前的服务器开发环境默认都会以8859-1进行解码并响应,这样的话中文字符肯定是不支持,需要在serverlet里面指定接收的编码才能正常的。
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
20#
 楼主| 发表于 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)也是乱码的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-29 15:09 , Processed in 0.267770 second(s), 20 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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