package Sambo;public class URLtoUTF8 {//将汉字转换为编码public static String toUtf8String(String s) {StringBuffer sb = new StringBuffer();for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c >= 0 && c <= 255) {sb.append(c);} else {byte[] b;try {b = String.valueOf(c).getBytes("utf-8");} catch (Exception ex) {System.out.println(ex);b = new byte[0];}for (int j = 0; j < b.length; j++) {int k = b[j];if (k < 0)k += 256;sb.append("%" + Integer.toHexString(k).toUpperCase());}}}return sb.toString();}//将编码转换为汉字public static String unescape(String s) {StringBuffer sbuf = new StringBuffer();int l = s.length();int ch = -1;int b, sumb = 0;for (int i = 0, more = -1; i < l; i++) {/* Get next byte b from URL segment s */switch (ch = s.charAt(i)) {case '%':ch = s.charAt(++i);int hb = (Character.isDigit((char) ch) ? ch - '0': 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;ch = s.charAt(++i);int lb = (Character.isDigit((char) ch) ? ch - '0': 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;b = (hb << 4) | lb;break;case '+':b = ' ';break;default:b = ch;}/* Decode byte b as UTF-8, sumb collects incomplete chars */if ((b & 0xc0) == 0x80) { // 10xxxxxx (continuation byte)sumb = (sumb << 6) | (b & 0x3f); // Add 6 bits to sumbif (--more == 0)sbuf.append((char) sumb); // Add char to sbuf} else if ((b & 0x80) == 0x00) { // 0xxxxxxx (yields 7 bits)sbuf.append((char) b); // Store in sbuf} else if ((b & 0xe0) == 0xc0) { // 110xxxxx (yields 5 bits)sumb = b & 0x1f;more = 1; // Expect 1 more byte} else if ((b & 0xf0) == 0xe0) { // 1110xxxx (yields 4 bits)sumb = b & 0x0f;more = 2; // Expect 2 more bytes} else if ((b & 0xf8) == 0xf0) { // 11110xxx (yields 3 bits)sumb = b & 0x07;more = 3; // Expect 3 more bytes} else if ((b & 0xfc) == 0xf8) { // 111110xx (yields 2 bits)sumb = b & 0x03;more = 4; // Expect 4 more bytes} else /* if ((b & 0xfe) == 0xfc) */{ // 1111110x (yields 1 bit)sumb = b & 0x01;more = 5; // Expect 5 more bytes
            }/* We don't test if the UTF-8 encoding is well-formed */}return sbuf.toString();}
}

转载于:https://www.cnblogs.com/SangBigYe/p/3224792.html

汉字和utf编码转换相关推荐

  1. delphi 汉字的编码 转换

    delphi 汉字的编码 转换 2009-10-07 21:57:00|  分类: delphi |  标签: |字号大中小 订阅 ━━━━━━━━━━━━━━━━━━━━━━━━━━ var Str ...

  2. 汉字转16进制 php,php中文汉字与16进制编码转换三种方法

    用php实现中文汉字与16进制间的编码转换. 例1, 复制代码 代码示例: //汉字转换为16进制编码 function hexencode($s) { return preg_replace('/( ...

  3. 汉字乱码状态下的编码转换将导致的问题

    实验工具 notepad++编辑器 实验过程 步骤1:打开notepad++,新建一个文本文件,在其中输入一段汉字文本,查看当前编码格式,如下: 分析:由上图可见,从右下角可知当前文件是以UTF-8解 ...

  4. php中文汉字与16进制编码转换三种方法

    本文介绍了php中文汉字与16进制编码转换的方法,php汉字编码转换的几个例子,有需要的朋友参考下. 用php实现中文汉字与16进制间的编码转换. 例1, <?php //汉字转换为16进制编码 ...

  5. php文件在线编码转换,gbk编码在线转换_php汉字转码 GBK到Big5编码转换

    摘要 腾兴网为您分享:php汉字转码 GBK到Big5编码转换,月星家居,永辉生活,一点开,幸福钱庄等软件知识,以及酷我音乐车机,爱情电影网影音,杜比音效,微信制作宣传广告,dolbyadvanced ...

  6. html转换编码格式,html编码转换 html编码设置utf gbk编码转换图文教程

    html编码转换 html编码设置utf gbk编码转换图文教程篇 常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里DIVCSS5介绍使用D ...

  7. %e5 转换汉字 php,Linux Shell下把汉字转换为Url编码_自学php网

    在linux 的shell环境下有一个od命令可以把文件按不同的进制的ascii码输出,该功能可以完成在linux shell下把汉字转换为url编码的任务. url编码是十六进制的形如%E6%9C% ...

  8. java 将json转成utf 8_C# JSON转换以及编码转换

    C# JSON转换以及编码转换 一.C# Json转换 首先需要下载安装Newtonsoft.Json.dll,下载地址 引用后再添加:using Newtonsoft.Json;using Newt ...

  9. html用unicode编码转换汉字,汉字与Unicode编码相互转换(Js版)

    Unicode编码转换工具 //ASCII 转换 Unicode function AsciiToUnicode(){ if (document.getElementById("conten ...

最新文章

  1. 基于SSH实现的学生成绩管理系统
  2. springboot:实现分页查询,以及翻页功能
  3. SharePoint 2010 change home page或者default page
  4. Linux定制登录欢迎语
  5. Google上面有自己给你标注好的数据集
  6. LeetCode 64 最小路径和
  7. 牛逼!计算机基础知识总结与操作系统 PDF 开放下载了!
  8. mathematica 8.0.0 激活方法
  9. 【2018-2019-1】20165223-20165218 实验二 固件程序设计
  10. linux vim命令,linux之vim命令
  11. 如何解决缓存与数据库不一致?
  12. 高并发编程之面试题一
  13. 统计学权威盘点过去50年最重要的统计学思想,因果推理、bootstrap等上榜
  14. Java项目 yaml明文密码加密
  15. Dukto在路由器联互联网的情况下传输文件是否会耗互联网流量?
  16. html让字数超过多少,css强制省略号 css设置超过多少个字显示省略号
  17. 四、Flink部署 , job配置与运行
  18. [文摘20070308]中国历史朝代歌
  19. 实用技巧 一文解决 echarts 如何设置 legend 展示为虚线?
  20. uCOS-II 基础入门教程(九)

热门文章

  1. java 像素级碰撞检测,» 像素级碰撞检测类
  2. C语言程序设计基础练习题
  3. java 2d绘图 stroke_Java标准教程:Java 2D绘图--第4章使用Text
  4. 图书管理系统_目前图书管理系统存在的问题
  5. 技术系统进化法则包括_技术系统进化论,模式五、技术集成以增加系统功能
  6. java struts 框架_java中struts 框架的实现
  7. linux lib目录找不到,linux中jpeglib库文件我安装了,但是我运行自己写的代码总是找不到这个库...
  8. 如何安装mysql5.7.2_CentOS 7.2 安装MySQL 5.7
  9. abb限位开关已打开drv1_Telemecanique传感器限位开关产品系列
  10. C语言变量和数据类型