Closed stdrc closed 6 years ago
一种最简单的考虑是直接取消 emoji CQ 码和 Unicode 之间的转换,但是这样,还是不能解决上面描述的最后一个问题,而且,太过于简单粗暴,不够优雅
🤔发现这个 emoji 好像发不过去
🤔发现这个 emoji 好像发不过去
这个可能无解,🤔
这玩意已经是单个码点的 emoji 了,code point 是 1F914
,大概只能用 [CQ:emoji,id=129300]
表示
好的,那就是 emoji 的特殊 encode 代码我还得找回来 这个在 coolq 那个大长串的特殊表情码里吧?
什么特殊表情码(
但其中的例外,就是其中以 0023 到 00AE 为第一码位的符号 emoji,这些 emoji 在一个 CQ 码中以一个较大的数字出现,目前规律未知。
这个问题只涉及到从酷 Q 到外部的情况,通过对 id 设置特例来解决了。
这个里面的超复杂的组合 emoji,在 CQ 码中,没有大数字,但其中的 200D 似乎被保留为原始的二进制值,而不是转换成连续的 CQ 码;与此同时,如果在发送时将 200D 以 CQ 码形式发送,将会发出多个拆散的 emoji,其中的规律未知。
这个问题,发现当前代码中能够正常双向传输,不存在问题。
目前的测试和用户反馈发现,正常的单码位 emoji(一个 Unicode codepoint,也即一个
char32_t
可以表示的字符)是可以正常在 CQ 码和 Unicode 之间互转的。http://www.unicode.org/Public/emoji/11.0/emoji-sequences.txt 和 http://www.unicode.org/Public/emoji/11.0/emoji-variation-sequences.txt 中,由两、三个码位组成的 emoji 除了少数例外,均以两个 emoji CQ 码的形式出现,即同样可以正确互转。但其中的例外,就是其中以
0023
到00AE
为第一码位的符号 emoji,这些 emoji 在一个 CQ 码中以一个较大的数字出现,目前规律未知。http://www.unicode.org/Public/emoji/11.0/emoji-zwj-sequences.txt 这个里面的超复杂的组合 emoji,在 CQ 码中,没有大数字,但其中的
200D
似乎被保留为原始的二进制值,而不是转换成连续的 CQ 码;与此同时,如果在发送时将200D
以 CQ 码形式发送,将会发出多个拆散的 emoji,其中的规律未知。