从网上获取的 中文转码工具

  

package com.test;import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;public class CharToolsUtil {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* 单个中文字符被转码为 以%E起始长度为9的字符串*/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) {//每个中文汉字会被编码成  以%E开头长度为9的字符串  text = text.toLowerCase();int p = text.indexOf("%");if (p != -1 && text.length() - p > 9) {text = text.substring(p, p + 9);}return Utf8codeCheck(text);}/*** 测试* @param args* @throws UnsupportedEncodingException */@SuppressWarnings("deprecation")public static void main(String[] args) throws UnsupportedEncodingException {//System.out.println(CharTools.Utf8URLencode("我它闷"));String url;String url2 = "https://www.baidu.com/s?wd=语 文 ?&rsv_spt=1&rsv_iqid=0xd13fd9040001fb1d&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=2&rsv_sug1=2&rsv_sug7=101&rsv_sug2=0&inputT=774&rsv_sug4=1367  &AAAA=1";url = "http://www.google.com/search?hl=zh-CN&newwindow=1&q=%E4%B8%AD%E5%9B%BD%E5%A4%A7%E7%99%BE%E7%A7%91%E5%9C%A8%E7%BA%BF%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2&btnG=%E6%90%9C%E7%B4%A2&lr=";String utf8urLencode = Utf8URLencode("https://www.baidu.com?wd=语文&a=3 % ? :");// String url = "http://www.google.com/search?hl=zh-cn&newwindow=1&q=中国大百科在线全文检索&btng=搜索&lr=";if(CharToolsUtil.isUtf8Url(url2)){String ldecode = CharToolsUtil.Utf8URLdecode(url2);System.out.println(ldecode);String lencode1 = CharToolsUtil.Utf8URLencode(ldecode);String lencode2 = URLEncoder.encode(ldecode,"UTF-8");System.out.println("uft8:"+lencode1+"\nURLEncoder:"+lencode2);//System.out.println(CharTools.Utf8URLdecode(url));}
//          url = "http://www.google.com/search?hl=zh-cn&newwindow=1&q=中国大百科在线全文检索&btng=搜索&lr=";if(!CharToolsUtil.isUtf8Url(url)){System.out.println(CharToolsUtil.Utf8URLencode(url));}}
}

  

转载于:https://www.cnblogs.com/northern-light/p/8021972.html

Http URL中文编码解码工具类相关推荐

  1. URL编码解码工具类

    /****************************************************************************** * CREATETIME : 2016年 ...

  2. 小工具发布(2008-01-25更新,HTML、URL编解码工具)

    (2008-01-25)HTML.URL编解码工具 [介绍文章][访问该工具]

  3. Java(35):Java Base64编码和解码工具类

    Java Base64编码和解码工具类 Base64Util工具类: package com.ciphergateway.utils; import java.io.UnsupportedEncodi ...

  4. 条形码和二维码编码解码工具类源码

    有一个好的工具,会让你的开发事半功倍.再将讲这个工具类之前,我先给小白补充一点条形码和二维码(以下基础知识选自,我本科阶段的一本教材:<物联网导论>(刘云浩 编著).有对物联网感兴趣的,可 ...

  5. java 短链接实现方案_java利用百度短网址api实现URL长短互换工具类分享

    * 原理: * 1,url以post方法传递到了http://dwz.cn/create.php的url参数内; * 2,dwz.cn先检查是否符合转化的要求 * 3,dwz.cn将url的参数提取为 ...

  6. android汉字转url,Android将文本中的URL转换为超链接工具类(原文本有超链接标签也适用)...

    public class TextToLinkUtil { public static String textContainUrlToLink(String urlText) { // 先拆分原字符串 ...

  7. 二维码 解码工具类

    用于 二维码的解码 该方法是用于二维码的解密    传入一个Bitmap  对象 public class QrDecodeUtils {Context context;public static S ...

  8. java htmldecoder_HTMLDecoder——开头的HTML编码的解码工具类(java)

    import java.util.Arrays; /** * * @author xiehui 2019/8/30 * */ public class HTMLDecoder { // 开头的编码换转 ...

  9. HTMLDecoder——开头的HTML编码的解码工具类(java)

    import java.util.Arrays;/*** * @author xiehui 2019/8/30**/ public class HTMLDecoder {// &#开头的编码换 ...

最新文章

  1. 培养组学对已分离人类细菌和古菌物种库的贡献
  2. Spark LogisticRegression 逻辑回归之建模
  3. 2018.06.28 与或(线段树)
  4. Linux命令:tail
  5. IPC 和 RPC (呵呵,我感觉我应该要钻研到这个深度啦)
  6. 作业6--团队项目之需求
  7. QuarkXPress 2021 for Mac(图文设计排版布局工具)
  8. eclipse如何设置成保护眼的背景色
  9. WPF实现炫酷趋势图
  10. Unity使用陀螺仪检测屏幕方向
  11. [HITICS]大作业——程序人生Hello‘s P2P
  12. SwiftUI - Text
  13. Python IDEL查询和修改当前目录
  14. [模型库]两款经典puma560机器人三维模型
  15. 【TensorFlow学习之路】一--TensorFlow基本概念
  16. 干货全拿走-用ExcelVBA做个股多模型交叉验证择时交易套利及回测系统
  17. java 折纸折成珠峰高度
  18. python中else是什么意思中文翻译_else是什么意思
  19. 游戏策划概述(二)——设计
  20. 硬盘上有损坏区域,该如何重新分区

热门文章

  1. vi 编辑文件中常用命令
  2. Vue 组件封装 | 给汉字注音(带声调),内含汉字转拼音(带声调/不带声调),获取汉字首字母的方法
  3. 数据挖掘顶级会议与期刊分析
  4. 如何更改linux文件权限设置,linux文件权限学习笔二——如何修改文件权限(chgrp,chown,chmod)...
  5. 计算机常用螺丝刀,拆机必备工具──南旗螺丝刀
  6. audio标签 FileReader blob转base64 base64转blob 语音
  7. Win11是否支持老硬件?老电脑能装win11吗?
  8. 关于 Windows CE 系统中同步机制的思考
  9. debian安vs_在Debian 10系统下安装和更新Visual Studio Code的方法
  10. 算法的复杂性分析(一)---时间复杂度