|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
本帖最后由 L1yp 于 2018-10-27 22:51 编辑
前言:
想必大家不少人都遇到过emoji表情在易语言显示成??的问题,那么就来看看怎么解决这个问题!
本源码实现了将易语言不能显示的字符转换成USC2编码,这样您可以输出到编辑框\列表框\存到数据库等等.
技术顾问: Jβ
例如:
这段hex数据:F0 9F 98 B1 E5 93 88 E5 93 88 F0 9F 98 B1 F0 9F 98 B1(UTF8编码)
它的原始文本是:
使用UTF8ToAnsi()会得到"??哈哈????"
使用UTF8ToUSC2()就可以得到"\uD83D\uDE31哈哈\uD83D\uDE31\uD83D\uDE31"
使用USC2ToUTF8()还原"\uD83D\uDE31哈哈\uD83D\uDE31\uD83D\uDE31"就会得到"F0 9F 98 B1 E5 93 88 E5 93 88 F0 9F 98 B1 F0 9F 98 B1"
实现的关键点:
https://baike.baidu.com/item/Unicode/750500?fr=aladdin的UTF-16部分.UTF-16一个码元是2个字节意味着总的范围是0000-FFFF,但是D800-DFFF是空白区域,也就是这个区域没有对应字符,这个区间被用来当做代理平面(也就是第一个码元是在这个区间的,就会有两个码元,也就是4字节),所以可以通过第一个码元的大小来判断到底是2字节还是4字节,如果4字节直接当做不能显示处理.一个码元也有不能显示,当UnicodeToAnsi()返回空的就是不能显示(如果你有gbk的utf16范围那就不用这么麻烦了,知道的欢迎加群讨论:547525064)
这个源码只针对源数据是UTF8编码的数据,(因为在Protobuf中一般都是utf8),我的另一篇Protobuf一键生成代码的地址:https://bbs.125.la/forum.php?mod=viewthread&tid=14247304&extra=
编码.e
(32.18 KB, 下载次数: 1687)
|
评分
-
查看全部评分
|