Unicode编码转中文Java实现


Unicode转中文相关的内容在网上存在很多,本来也不打算重复制造轮子的,但是看了别人的代码,总感觉有点奇怪。比如搜到比较多的一段代码是这样写的:

public static String decodeUnicode(final String dataStr) {   int start = 0;   int end = 0;   final StringBuffer buffer = new StringBuffer();   while (start > -1) {   end = dataStr.indexOf("\\u", start + 2);   String charStr = "";   if (end == -1) {   charStr = dataStr.substring(start + 2, dataStr.length());   } else {  charStr = dataStr.substring(start + 2, end);   }   // 16进制parse整形字符串。 char letter = (char) Integer.parseInt(charStr, 16);   buffer.append(new Character(letter).toString());   start = end;   }   return buffer.toString();
}

仔细分析上述代码,我们会发现这段代码其实只能将纯Unicode编码转为中文,如果其中夹杂了部分英文则在Integer.parseInt(charStr, 16)这段代码处将会抛出异常。当然了,如果是纯粹的Unicode,那就没有问题的。
所以基于此,将该代码进行部分修改:

// 将Unicode转为中文显示
public static String decodeUnicode(final String dataStr) {int start = 0;int end = 0;int size = dataStr.length();final StringBuilder buffer = new StringBuilder();// 找到第一个\\u的位置while (start < size) {end = dataStr.indexOf("\\u", start);end = end < 0 ? size : end;String charStr;if (end == start) {// 如果start == end,则表示从start开始就是Unicode编码,start += 2;end += 6;charStr = dataStr.substring(start, end);// 16进制parse整形字符串。char letter = (char) Integer.parseInt(charStr, 16);buffer.append(letter);} else {// 如果start != end,则表示从start到end-1处都没有Unicode编码buffer.append(dataStr, start, end - 1);}// 重新调整start的位置start = end;}return buffer.toString();
}// 读取文件filePath中的内容并将其中的Unicode转为中文后保存在文件targetFilePath中
public static void decodeUnicodeToFile(String filePath, String targetFilePath) {if (filePath == null || targetFilePath == null) {System.err.println("path不能为空!");}try {File file = new File(filePath);BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));ByteArrayOutputStream bos = new ByteArrayOutputStream();byte[] bytes = bis.readAllBytes();StringBuilder strByte = new StringBuilder();for (byte b : bytes) {strByte.append((char)b);}String str = decodeUnicode(strByte.toString());File file2 = new File(targetFilePath);bytes = str.getBytes();bos.writeBytes(bytes);bos.writeTo(new FileOutputStream(file2));bos.close();bis.close();} catch (Exception e){System.out.println("exec error: " + e.getMessage());}
}

【Java】Unicode转中文代码实现相关推荐

  1. java unicode to 中文_java 怎么把unicode转中文

    用java如何把unicode码转成汉字?会有那么一天我和你躺在同一张大床上,醒来第一眼看见的就是你. 用java怎么把"\u4fdd"码转成汉字? 程序怎么写的?干柴遇烈火,那叫 ...

  2. java Unicode转UTF-8代码

    在做http请求时,有时候服务器传回的数据中会遇到传回数据为Unicode的情况,为此需要进行Unicode转UTF-8的转化,代码: public class StringTest {/*** @p ...

  3. UnicodeConverteUtil: Java unicode 与 中文相互转换

    Unicode 是一种字符集编码,是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案, 可以表示任何字符. java 语言中Unicode 使用\u + 四位16进制数字组成, 如: \u59 ...

  4. java unicode 转换_java中unicode和中文相互转换的简单实现

    下面小编就为大家带来一篇java中unicode和中文相互转换的简单实现.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 如下所示: package test.com.g ...

  5. java匹配unicode符号和表情_快速通过Unicode将国家代码转换为表情符号标志

    快速通过Unicode将国家代码转换为表情符号标志 我正在寻找一种快速的方法来使类似: let germany = "DE" 进入 let flag = "\u{1f1e ...

  6. python utf-8编码转换中文_python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法.分享给大家供大家参考,具体如下: 一.在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77e ...

  7. python文件编码转换工具_python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法.分享给大家供大家参考,具体如下: 一.在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77e ...

  8. python unicode码转换_python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法.分享给大家供大家参考,具体如下: 一.在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77e ...

  9. python unicode编码转换中文_python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法.分享给大家供大家参考,具体如下: 一.在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77e ...

最新文章

  1. phpstorm failed to create jvm:error code -6 解决办法 解决方法
  2. checkIP.sh
  3. app制作流程步骤_企业画册设计流程总结 告诉你画册制作步骤
  4. c-nominated = ((rcheck-use_candidate) || c-nominated);
  5. 简易排水简车的制作 TurnipBit 系列教程
  6. 面试分享系列 | 17道Python面试题,让你在求职中无往不利
  7. JSP---网页日历
  8. BGP 最佳路径选择之 -- Local Preference
  9. Web前端:“杭州华三通信技术有限公司”的主网站案例设计
  10. NAT MASQUERADE
  11. EXEL表格读取 按键精灵
  12. macbook插入耳机不出声
  13. Java中的偏向锁,轻量级锁, 重量级锁解析
  14. 随手练——字符串按最小(大)字典序拼接
  15. ps安装了可以打开但开始里面找不到_黑苹果安装入门(hackintosh install)
  16. 信息学奥赛一本通1055:判断闰年
  17. html+显示平方米,平方米符号怎么打【四种方法】
  18. python和易语言哪个容易胖_坐着长肉还是躺着长肉 哪个更容易胖
  19. EtherCAT和CANopen之间有什么关系?
  20. connect() failed (10061: No connection could be made because the target machine actively refused it

热门文章

  1. python元组 tup
  2. 项目管理论坛_【一线】这届项目管理论坛硬货满满!
  3. pc端支付宝支付和微信支付(vue)
  4. Windows系统盘空间大清理
  5. Intel x86体系结构的资料
  6. OnActionExecuting 中设置跳转指定网址或路由
  7. PMP考试冲刺计算专题
  8. SQL 保留2位小数的方法/四舍五入
  9. 笔记:源码修改开放5555端口
  10. 计算机安装操作系统的目的是什么,装系统