设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 18524|回复: 24
打印 上一主题 下一主题

BRAC_TransBufferEx传输数据乱码

[复制链接]

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
跳转到指定楼层
楼主
发表于 2015-10-15 20:12:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好,咨询个问题,,,我在anychat的web端发送BRAC_TransBufferEx中文数据到服务端,服务端解码String msg = new String(lpBuf, "GBK");可以正常,此时发送给IOS端时,IOS端中文乱码。
此时,我将String msg = new String(lpBuf, "GBK");改为String msg = new String(lpBuf, "UTF-8");后
IOS端anychat发送BRAC_TransBufferEx中文数据到服务端可以正常显示,但是其直接发送到web端中文乱码
这个问题怎么解决?
谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

沙发
发表于 2015-10-15 21:31:37 | 只看该作者
您好,请问您在将String msg = new String(lpBuf, "GBK");改为String msg = new String(lpBuf, "UTF-8");后,web端发送给ios的中文显示如何呢?
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
板凳
 楼主| 发表于 2015-10-16 06:55:06 | 只看该作者
佰锐科技-李友勤 发表于 2015-10-15 21:31
您好,请问您在将String msg = new String(lpBuf, "GBK");改为String msg = new String(lpBuf, "UTF-8");后 ...

也是中文乱码的,gbk和utf8,web到ios之间这个通道都是中文乱码,但是服务器接受的,如果是gbk,接受wec端正常ios乱码,如果utf8的话,服务器接受ios正常接受web乱码
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9109

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9109
地板
发表于 2015-10-16 09:25:00 | 只看该作者
您好,BRAC_TransBuffer、BRAC_TransBufferEx是不会对传输内容进行修改的,包括字符集的转换。

您所遇到的乱码主要是由于不同的平台有不同的字符集,如iOS就是UTF-8,而业务服务器可能就是GB2312。

如果您需要在不同平台之间传输中文字符,建议使用文字聊天API接口(BRAC_SendTextMessage),该API接口会自动根据平台进行字符集的转换,避免乱码。
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
5#
 楼主| 发表于 2015-10-17 09:09:34 | 只看该作者
admin 发表于 2015-10-16 09:25
您好,BRAC_TransBuffer、BRAC_TransBufferEx是不会对传输内容进行修改的,包括字符集的转换。

您所遇到 ...

您好,那BRAC_TransBufferEx这个通道有没有什么api提供字符集转换呢
回复 支持 反对

使用道具 举报

6#
发表于 2015-10-17 11:58:59 | 只看该作者
本帖最后由 佰锐科技-李友勤 于 2015-10-17 16:19 编辑
淡竹叶 发表于 2015-10-17 09:09
您好,那BRAC_TransBufferEx这个通道有没有什么api提供字符集转换呢

您好,这个函数是透明通道,透明通道不对业务所处理的数据进行任何干扰的。

您如果在按照您上面的说法,就是说utf-8在web端不支持。

您可以试着在web端再试一下GBK字符集。
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
7#
 楼主| 发表于 2015-10-17 12:36:37 | 只看该作者
佰锐科技-李友勤 发表于 2015-10-17 11:58
您好,这个函数是透明通道,透明通道不对业务所处理的数据进行任何干扰的。

您如果在按照您上面的说法 ...

您好,扩展通道在IOS端的回调函数的缓存内容是二进制值,在web端拿到的是字符串格式,能不能说说为什么返回的内容不一致么;
使用BRAC_TransBufferEx直接从web传递内容到ios端,IOS端获取二进制转化成字符串乱码;IOS端使用BRAC_TransBufferEx传递二进制内容(API制定只能传二进制),此时WEB端接收到的回调函数里的缓存地址内容也是乱码的。
回复 支持 反对

使用道具 举报

8#
发表于 2015-10-17 13:19:43 | 只看该作者
淡竹叶 发表于 2015-10-17 12:36
您好,扩展通道在IOS端的回调函数的缓存内容是二进制值,在web端拿到的是字符串格式,能不能说说为什么返 ...

您好,请确认下您发送数据的编码平台与接收数据的平台编码是一致的。
BRAC_TransBufferEx的缓冲区可以是一个字节数组,或是一个字符串等,也可以是一块内存,传入首地址即可。
您可以参考下相关说明:
如何使用缓冲区及文件传输功能?
回复 支持 反对

使用道具 举报

9#
发表于 2015-10-17 13:24:35 | 只看该作者
淡竹叶 发表于 2015-10-17 12:36
您好,扩展通道在IOS端的回调函数的缓存内容是二进制值,在web端拿到的是字符串格式,能不能说说为什么返 ...

您好,以下是论坛上一位坛友的代码,您可以对比一下看看有没有问题。但是需要注意接收方和发送方的编码设置一定要一致
ios透明通道使用代码参考
回复 支持 反对

使用道具 举报

6

主题

53

帖子

170

积分

注册会员

Rank: 2

积分
170
10#
 楼主| 发表于 2015-10-17 13:53:58 | 只看该作者
佰锐科技-李友勤 发表于 2015-10-17 13:19
您好,请确认下您发送数据的编码平台与接收数据的平台编码是一致的。
BRAC_TransBufferEx的缓冲区可以是 ...

您好,ios端没有gbk,用的是uft-8;而在web端,我的jsp指定的编码是utf-8,你们web端的回调事件中的缓冲地址是不是默认将二进制转化成了gbk或gb2312等编码,否则理论上来说,IOS端发送二进制的数据,web端应该也接收二进制数据吧,但结果是字符串形式
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-5 07:46 , Processed in 0.150777 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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