递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 5326|回复: 1
打印 上一主题 下一主题

[安卓] [火山移动编程系列笔记][原创]ucs2解码问题方法

[复制链接]

26

主题

47

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2019-12-15 18:55:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注意此函数支持是\u格式如果是%u可以先替换成\u,这个函数可以在usc2中插入不相关的解码字符,比如:你好\u1234不会影响解码,这个就是用寻找字符方法实现的,其实也可以用正则表达式方法搞定,这里足够用了。
方法名 ucs2解码 返回值 文本型
参数名 ucs2 类型 文本型
然后写代码
@   final StringBuffer buffer = new StringBuffer();
@                String result="";
@                String charStr="";
@                int findIndex=0;
@                int offsetIndex=0;
@                while(findIndex>-1)
@                {
@                        findIndex=@<ucs2>.indexOf("\\u",offsetIndex);
@                        if(findIndex>-1)
@                        {
@                                if(findIndex==offsetIndex)
@                                {
@                                        charStr=@<ucs2>.substring(findIndex+2,findIndex+6);
@                                char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。
@                                    result=new Character(letter).toString();
@                                    offsetIndex=findIndex+6;
@                                    buffer.append(result);
@                                }else
@                                {
@                                        result=@<ucs2>.substring(offsetIndex,findIndex);
@                                        charStr=@<ucs2>.substring(findIndex+2,findIndex+6);
@                                        char letter = (char) Integer.parseInt(charStr, 16);
@                                        result+=new Character(letter).toString();
@                                        offsetIndex=findIndex+6;
@                                        buffer.append(result);
@                                }
@                               
@                        }
@                       
@                }
@                if(offsetIndex<@<ucs2>.length()-1)
@                {
@                        buffer.append(@<ucs2>.substring(offsetIndex));
@                }
@            
@                @<ucs2>=buffer.toString();   
返回(ucs2)

由于火山IDE代码不能复制粘贴,不是十分方便,凑活着写吧,我真心希望官方编辑的代码能像文本复制粘贴,估计是无望了。
这个代码我实际测试过没有问题,Java实现请参考我的博客https://blog.csdn.net/FL1623863129/article/details/103551582
最后欢迎访问我的博客https://blog.csdn.net/FL1623863129/,博客正在不定时发布火山移动编程的基础知识,方便大家学习和共同进步,衷心祝愿吴涛老总的火山越更新越好用!

回复

使用道具 举报

445

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40618
沙发
发表于 2019-12-15 23:51:37 | 只看该作者
感谢贡献。  

不过这个方法  无名模块 里面早已经集成,欢迎下载模块参考学习。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-29 15:57 , Processed in 0.082238 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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