yunfan 进来一下,有个问题,关于表情
我跟eva, lumaqq都进行了测试。表情传递是兼容的。但是,我用eva或者lumaqq或者kopete plugin发送表情给windows下的,却是错误的。
并且luma, eva都不支持冒号-D,这样的表情格式,但是win是支持的。
是不是,这里的表情兼容代码有点问题? 这是跟eva双向通讯的结果 刚才在lab, 好了,现在到家了。
这样的, 我估计是编码的方法肯定是对的,可能是转换内码不当的原因。
但是,我的朋友中(用windows)有可以看到的,也有看不到的。 但是,如果在
但是双击聊天记录,一定可以正常在聊天窗口中看到。这个说明了编码的正确性。
我估计是因为从unicode 到 gbk转换的时候,有些问题。
我查一下windows的表情解码以后的详细数据, 应该可以解决。
还有就是输入像: D 之类的不显示的问题。 因为我没有写解析的部分,
只要加上一点解析的部分就可以了。 win-qq应该是把: D解析为表情编码了
像/xin 之类的。 需要自己写解析换成表情编码就可以了。 关于D之类的,luma和eva都没有作,这就是以给字典的时,关键是不知道,QQ那么多的表情到底是怎么跟符号对应的。
我google找了一下对照表,没有发现,如果能对应起来,建个词典就OK了。
kopete比较特殊,因为它支持多种simley 主题的选择,有自己的符号对照引擎。
如果是一般的simley theme,根本没有办法支持全部的QQ表情。
我刚才修改了一下代码,将受到的message专程KopeteMessage::RichText,使用自己的qq-smileys来显示。这样,也就可以在不论kopete本身使用什么simley theme的情况下,永远正确显示收到的qq smiley。
但是,发送还是有写问题,如果使用冒号-D之类的对照引擎,纯文本发送。luma, eva, 不知道gaim-qq怎么样,应该也不可以。所以,最好的办法,还是建立一个对应词典。这样发送的时候永远使用纯文本的消息就OK了。
对方不论是什么客户端,都能正确的显示。
目前这一点,如果在kopete中,使用我自己定义的qq-smileys引擎,发送给luma, eva都没有问题,估计gaim-qq也应该没事。
但是,这个qq-smileys theme又不能用在其他的message protocol里,麻烦。 关于D之类的,luma和eva都没有作,这就是以给字典的时,关键是不知道,QQ那么多的表情到底是怎么跟符号对应的。
我google找了一下对照表,没有发现,如果能对应起来,建个词典就OK了。
kopete比较特殊,因为它支持多种simley 主题的选择,有自己的符号对照引擎。
如果是一般的simley theme,根本没有办法支持全部的QQ表情。
我刚才修改了一下代码,将受到的message专程KopeteMessage::RichText,使用自己的qq-smileys来显示。这样,也就可以在不论kopete本身使用什么simley theme的情况下,永远正确显示收到的qq smiley。
但是,发送还是有写问题,如果使用冒号-D之类的对照引擎,纯文本发送。luma, eva, 不知道gaim-qq怎么样,应该也不可以。所以,最好的办法,还是建立一个对应词典。这样发送的时候永远使用纯文本的消息就OK了。
对方不论是什么客户端,都能正确的显示。
目前这一点,如果在kopete中,使用我自己定义的qq-smileys引擎,发送给luma, eva都没有问题,估计gaim-qq也应该没事。
但是,这个qq-smileys theme又不能用在其他的message protocol里,麻烦。
另外就是目前kopete不支持为每个协议自动设置不同的default smileys theme。
这个如果能够实现,也比较方便,只要是qq协议,就使用qq-smileys就可以了。
不会影响其他协议。
估计这个需求需要向kopete developers发出request了。
另:
eva有几个BUG.
1,下线时候应该将所有的user face置为offline。
2,crash较多,另friend list的管理好像有点乱。 我也在想这个问题, 正在研究winQQ的消息内容。
先解决在win下正常显示smiley的问题。
我会把新的libeva中发送部分,做成支持文本表情的, 用户不用具体关心
表情的转换了。
另,我这里Eva现在几乎就没有crash, 所以有时候很难找到问题。
不过,里面好些地方写的不规范, 正在全部重构,重写中。 已经找到问题所在,smiley图标可以正常在windows下显示了。
字体名一定要设置成GB内码的windows有的字体, 字体名对于正确显示表情很重要。
在SendIMPacket.cpp中改两个地方,
1。 构造函数的变量初始化中, 那个fontName(“宋体”) , 把这个删掉。
2。 在方法initTextContent(unsigned char *buf)中:
把
QCString fchar = fontName.local8Bit();
memcpy(buf+pos,fchar.data(), fchar.size());
pos+= (fchar.size()-1);
这三行换为以下四行,(删掉上面三行,再在加上以下四行代码):
buf[pos++] = 0xcb;
buf[pos++] = 0xce;
buf[pos++] = 0xcc;
buf[pos++] = 0xe5;
其实,是gb内码的“宋体”两个字, 因为程序文件是utf8编码,“宋体”两个字
发送的时候,没有转对内码。
其他的不用动。
你试一下, 看是否在windows下可以正常显示表情。
页:
[1]