下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java的Unicode编码转化(多种情况处理⽅法)Java的Unicode编码转化(多种情况处理⽅法)Java转unicode转中⽂的情况使⽤的场景很多,是⼀个很常见的需求,按理来说,这样的功能应该被java集成起来,不过很遗憾,java提供的⽅法很烂,很多时候我们需要⾃⼰去写。好在这个需求的源代码⽹上很多,在查资料的过程中,我找到啦好⼏种,下⾯我将我找到的资料分享和我⾃⼰实现的⽅法提供给⼤家;希望⼤家能有个参考;1、java中使⽤的是unicode编码,所以如果我们得到的本⾝就是⼀个unicode编码,那么我们可以直接print出来的就是中⽂:publicstaticvoidmain(String[]args){Stringstring="\u9999\u714e\u9a6c\u9c9b\u9c7c\u7684\u535a\u5ba2;"System.out.println(string);}输出:可是像上⾯那种情况在实际问题⾥是很少见的,在1例⼦中,”\”是转义字符,实际我们得到的unicode编码是这样的:publicstaticvoidmain(String[]args){Stringstring="\\u9999\\u714e\\u9a6c\\u9c9b\\u9c7c\\u7684\\u535a\\u5ba2;"System.out.println(string);}⽽这样得到的输出结果就变成了这样:这样的结果肯定是我们不想要的,那么解决⽅法是什么呢:⽅法⼀⼀::这是在⽹上最常见的⼀种⽅法,直接将⽅法decodeUnicode放在类中就可以,⽅便,不过缺点就是代码量⽐较⼤,下⾯我们测试⼀下它的转义能⼒测试项例⼦输出正确结果总结基本能\u9999\u714e\u9c7c⾹煎鱼⾹煎鱼正确⼒中英⽂数字混合1\u9999123\u714ehi\u9c7ca1⾹123煎hi鱼a1⾹123煎hi鱼a正确⽆法正常运⾏中英\u9999\u\u714e\u9c7c⾹\u煎鱼(错误)⽂,特殊字符混合转义\u9999\\u714e\u9c7c⾹\u714e鱼⾹\煎鱼\u9999\\u714e\u9c7c⾹\u714e鱼⾹\煎鱼有误可见,⽅法⼀虽然能能对对中中英英混混合合进进⾏⾏识识别别,,但但对\和\u的识别仍然存在问题,我们可以给他打70分;publicstaticStringdecodeUnicode(StringtheString){charaChar;intlen=theString.length();StringBufferoutBuffer=newStringBuffer(len);for(intx=0;x<len;){aChar=theString.charAt(x++);if(aChar=='\\'){aChar=theString.charAt(x++);if(aChar=='u'){//Readthexxxxintvalue=0;for(inti=0;i<4;i++){aChar=theString.charAt(x++);switch(aChar){case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':value=(value<<4)+aChar-'0';break;case'a':case'b':case'c':case'd':case'e':case'f':value=(value<<4)+10+aChar-'a';break;case'A':case'B':case'C':case'D':case'E':case'F':value=(value<<4)+10+aChar-'A';break;default:thrownewIllegalArgumentException("Malformed\\uxxxxencoding.");}}outBuffer.append((char)value);}else{if(aChar=='t')aChar='\t';elseif(aChar=='r')aChar='\r';elseif(aChar=='n')aChar='\n';elseif(aChar=='f')aChar='\f';outBuffer.append(aChar);}}elseoutBuffer.append(aChar);}returnoutBuffer.toString();}}
⽅法⼆⼆::此种⽅法在⽹上也⽐较常见,代码量少,可读性强是它最⼤的优点,但是,它的转义能⼒……⼤家⾃⼰体会⼀下吧;测试项例⼦输出正确结果⾹煎鱼总结正确基本能⼒\u9999\u714e\u9c7c⾹煎鱼中英⽂数字混合⽆法正常运⾏1\u9999123\u714ehi\u9c7ca(错误)1⾹123煎hi鱼a⽆法正常运⾏中英\u9999\u\u714e\u9c7c\u9999\\u714e\u9c7c⾹\u煎鱼(错误)(错误)⽂,特殊字符混合⽆法正常运⾏⾹\煎鱼它的转义能⼒决定它的实⽤性不强,但是鉴于它⽐较简单,所以还是有⼀定市场的,不过也请⼤家谨慎使⽤,根据我的测试,这种这种转转码⽅⽅式式只对全中⽂有效只对全中⽂有效publicstaticStringascii2native_orl(Stringascii){intn=ascii.length()/6;StringBuildersb=newStringBuilder(n);for(inti=0,j=2;i<n;i++,j+=6){Stringcode=ascii.substring(j,j+4);charch=(char)Integer.parseInt(code,16);sb.append(ch);}returnsb.toString();}⽅法法三三::既然⽅法⼆有问题,那么我们能不能对他进⾏⼀些改进,让它适应性更强呢,当然,如果⽅法⼆加上正则表达式,就有更强的功能了测试项例⼦输出正确结果⾹煎鱼总结正确基本能⼒\u9999\u714e\u9c7c⾹煎鱼中英⽂数字混合1\u9999123\u714ehi\u9c7ca1⾹123煎hi鱼a1⾹123煎hi鱼a正确\u9999\u\u714e\u9c7c\u9999\\u714e\u9c7c⾹\u煎鱼⾹\煎鱼⾹\u煎鱼⾹\煎鱼正确正确中英⽂,特殊字符混合这种⽅法很好利⽤了正则表达式,代码可读性强,转义能⼒也很不错,强烈推荐publicstaticStringascii2native(Stringascii){List<String>ascii_s=newArrayList<String>();Stringzhengz="\\\\u[0-9,a-f,A-F]{4}";Patternp=Ppile(zhengz);Matcherm=p.matcher(ascii);while(m.find()){ascii_s.add(m.group());}for(inti=0,j=2;i<ascii_s.size();i++){Stringcode=ascii_s.get(i).substring(j,j+4)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T-YNRZ 017-2024 珠芽黄魔芋产地环境条件
- 大单元情境与任务设计
- 版高考英语大一轮复习第部分模块考点复习UnitMo
- 古代汉语的词类活用
- 信息技术(第2版)(拓展模块)教案1-模块3 3.1 认知大数据
- 高中物理第一章电场第一节认识静电课件粤教版选修3-
- 小学生心理健康教育教案12
- 初中健康教育教案
- 课时4 七年级 Unit 4 2025年中考英语(仁爱版)一轮复习基础练(含答案)
- 【中考考点基础练】阶段检测二 力学综合素养提升 2025年物理中考总复习(福建)(含答案)
- 《就业形势分析》课件
- 先进核电技术研发项目实施方案
- 医院感染预防与控制中的职业暴露预防
- 银行安防知识教育
- 公路工程质量检验评定标准 第二册机电工程 JTG 2182-2020
- 八年级英语阅读竞赛试卷及答案
- 运动障碍疾病护理查房
- 分红合同附加协议
- 矿通风系统检测报告2
- 建设工程项目管理培训课件
- 护理员服务外包投标方案(技术标)
评论
0/150
提交评论