package com.gootrip.util;
import java.io.UnsupportedEncodingException;/**
* <p>Title:字符编码工具类 </p>
*/
public class CharTools {/*** 转换编码 ISO-8859-1到GB2312* @param text* @return*/public static final String ISO2GB(String text) {String result = "";try {result = new String(text.getBytes("ISO-8859-1"), "GB2312");}catch (UnsupportedEncodingException ex) {result = ex.toString();}return result;}/*** 转换编码 GB2312到ISO-8859-1* @param text* @return*/public static final String GB2ISO(String text) {String result = "";try {result = new String(text.getBytes("GB2312"), "ISO-8859-1");}catch (UnsupportedEncodingException ex) {ex.printStackTrace();}return result;}/*** Utf8URL编码* @param s* @return*/public static final String Utf8URLencode(String text) {StringBuffer result = new StringBuffer();for (int i = 0; i < text.length(); i++) {char c = text.charAt(i);if (c >= 0 && c <= 255) {result.append(c);}else {byte[] b = new byte[0];try {b = Character.toString(c).getBytes("UTF-8");}catch (Exception ex) {}for (int j = 0; j < b.length; j++) {int k = b[j];if (k < 0) k += 256;result.append("%" + Integer.toHexString(k).toUpperCase());}}}return result.toString();}/*** Utf8URL解码* @param text* @return*/public static final String Utf8URLdecode(String text) {String result = "";int p = 0;if (text!=null && text.length()>0){text = text.toLowerCase();p = text.indexOf("%e");if (p == -1) return text;while (p != -1) {result += text.substring(0, p);text = text.substring(p, text.length());if (text == "" || text.length() < 9) return result;result += CodeToWord(text.substring(0, 9));text = text.substring(9, text.length());p = text.indexOf("%e");}}return result + text;}/*** utf8URL编码转字符* @param text* @return*/private static final String CodeToWord(String text) {String result;if (Utf8codeCheck(text)) {byte[] code = new byte[3];code[0] = (byte) (Integer.parseInt(text.substring(1, 3), 16) - 256);code[1] = (byte) (Integer.parseInt(text.substring(4, 6), 16) - 256);code[2] = (byte) (Integer.parseInt(text.substring(7, 9), 16) - 256);try {result = new String(code, "UTF-8");}catch (UnsupportedEncodingException ex) {result = null;}}else {result = text;}return result;}/*** 编码是否有效* @param text* @return*/private static final boolean Utf8codeCheck(String text){String sign = "";if (text.startsWith("%e"))for (int i = 0, p = 0; p != -1; i++) {p = text.indexOf("%", p);if (p != -1)p++;sign += p;}return sign.equals("147-1");}/*** 判断是否Utf8Url编码* @param text* @return*/public static final boolean isUtf8Url(String text) {text = text.toLowerCase();int p = text.indexOf("%");if (p != -1 && text.length() - p > 9) {text = text.substring(p, p + 9);}return Utf8codeCheck(text);}
}

转载于:https://www.cnblogs.com/buhuifeideyun/p/4410264.html

JAVA 编码格式转换工具类相关推荐

  1. 自定义java对象转换工具类

    背景 项目中经常有VO.PO.DTO等之间转换,由于apache工具类中BeanUtils.copyProperties及Json序列化反序列化方式转换性能比较低(阿里巴巴规范检查有提示不建议采用). ...

  2. Java金额转换工具类

    package com.healthy.prms.common.util;import java.math.BigDecimal;/*** @ClassName: RMBUtils* @Descrip ...

  3. JAVA日期转换工具类

    java中经常会用到日期的转换,所有自己整理了一套日期转换的工具类,方便使用. 首先导入 <dependency><groupId>joda-time</groupId& ...

  4. 提高工作效率的万能Java行列转换工具类

    1.说明 有时候工作中需要动态生成列,也就是不确定的列,那么在数据库层就不是那么好操作了,可以使用java工具类来实现. 本工具类是对市面上的工具类进行加工改造,可以通用于各种情况,更加灵活,下面我来 ...

  5. java 对象 转换 工具类_Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)...

    通用excel与对象相互转换的工具类 前言:最近开发需要一个Excel批量导入或者导出的功能,之前用过poi-ooxml开发过一个导入的工具类,正好蹭着这次机会,把工具类的功能进行完善. 使用说明: ...

  6. java中文转换工具类

    /*** 获取中文首字母工具类** @author jiangjunjie*/ public class ChineseCharToEnUtil {/*** 转换为有声调的拼音字符串** @param ...

  7. Java 文件转换工具类(word,html,excel,pdf,md,jpeg,png互转)

    一.前言 目前支持: word 转 html doc 转 docx html 转 word html 转 pdf excel 转 pdf word 转 jpeg word 转 png markdown ...

  8. java 时间转换工具类 yyyyMMdd HH:mm

    获取系统当前时间戳 : System.currentTimeMillis()) 获取系统当前时间任意格式,自己根据生成的格式选择性填写 /*** 获取当前时间* 把需要生成的时间格式替换一下就可以* ...

  9. Java时间转换工具类

    /*** 获取对应毫秒转换成的天 时 分 秒 ms** @author 刘子固* @dete 2022.9.27*/ public class TimeDateUtils {/*** 一秒钟1000毫 ...

  10. java 视频转码工具类_JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇)...

    JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇) 前言 再此章之前,我们已经详细介绍和剖析了javacv的结构和ffmpeg ...

最新文章

  1. 数据段、数据报、数据包、帧的区别与联系
  2. linux线程调度函数,Linux调度策略及线程优先级设置
  3. ofbiz mysql 中文安装_ofbiz的部署及安装问题解决办法
  4. 使用seek()函数与read()快速实现读取文件中的一段数据
  5. 【渝粤教育】广东开放大学 数据库原理与应用 形成性考核 (1)
  6. c语言中if和goto的用法,C语言中if和goto的用法.doc
  7. idea maven插件tomcat内存溢出
  8. IDEA创建Scala
  9. idea 批量导入包
  10. Page Cache引起的业务问题处理
  11. vue-cli 2.x 项目优化之:引入本地静态库文件
  12. 基于Metronic的Bootstrap开发框架--工作流模块功能介绍(2)
  13. 从零开始学编程——DOS命令
  14. 北斗系统基础知识0(专家解析:北斗卫星导航通信系统起源与发展工作原理)
  15. beatedit不能导入音乐/不能加节拍
  16. Elasticsearch 入门到精通-Elasticsearch创建索引
  17. Linux中不同文字颜色代表的含义
  18. redux中导入createStore中间有条线,解决方案及redux的使用。(react)
  19. PyCharm配置SSH和SFTP连接远程服务器
  20. 初级程序员和高级程序员的区别,你了解吗?

热门文章

  1. 【计算机组成原理】运算器组成实验
  2. 【Java程序设计】类的重用
  3. spark 过滤log
  4. 未找到依赖项 ‘org.apache.spark:spark-hive_2.11:2.4.5‘
  5. Spark 理论简答
  6. 初步学习UITableView(摘自传智播客)
  7. 有效的python属性管理:描述符的使用
  8. 云智慧压测实战分享之JMeter场景设置与监控
  9. mysql 5.7.15发布
  10. “我来管管看”系列:如何消除报工数据与入库数据的差异?