最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現中文字符串與unicode互轉工具類

 更新時間:2019年04月22日 11:05:39   作者:hkhhkb  
這篇文章主要為大家詳細介紹了Java實現中文字符串與unicode互轉的工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java實現中文字符串與unicode互轉的具體代碼,供大家參考,具體內容如下

原理利用了java實現js的escape以及unescape函數。

/**
 * 中文字符串和unicode互轉工具類 <br>
 * 
 * @author hkb <br>
 */
public class UnicodeConvertUtils {

  /**
   * 實現js的escape函數
   * 
   * @param input
   *      待傳入字符串
   * @return
   */
  public static String escape(String input) {
    int len = input.length();
    int i;
    char j;
    StringBuffer result = new StringBuffer();
    result.ensureCapacity(len * 6);
    for (i = 0; i < len; i++) {
      j = input.charAt(i);
      if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j)) {
        result.append(j);
      } else if (j < 256) {
        result.append("%");
        if (j < 16) {
          result.append("0");
        }
        result.append(Integer.toString(j, 16));
      } else {
        result.append("%u");
        result.append(Integer.toString(j, 16));
      }
    }
    return result.toString();

  }

  /**
   * 實現js的unescape函數
   * 
   * @param input
   *      待傳入字符串
   * @return
   */
  public static String unescape(String input) {
    int len = input.length();
    StringBuffer result = new StringBuffer();
    result.ensureCapacity(len);
    int lastPos = 0, pos = 0;
    char ch;
    while (lastPos < len) {
      pos = input.indexOf("%", lastPos);
      if (pos == lastPos) {
        if (input.charAt(pos + 1) == 'u') {
          ch = (char) Integer.parseInt(input.substring(pos + 2, pos + 6), 16);
          result.append(ch);
          lastPos = pos + 6;
        } else {
          ch = (char) Integer.parseInt(input.substring(pos + 1, pos + 3), 16);
          result.append(ch);
          lastPos = pos + 3;
        }
      } else {
        if (pos == -1) {
          result.append(input.substring(lastPos));
          lastPos = len;
        } else {
          result.append(input.substring(lastPos, pos));
          lastPos = pos;
        }
      }
    }
    return result.toString();
  }

  /**
   * unicode轉中文
   * 
   * @param input
   *      待傳入字符串
   * @return
   */
  public static String toGb2312(String input) {
    input = input.trim().replaceAll("(?i)\\\\u", "%u");
    return unescape(input);
  }

  /**
   * 中文字符串轉unicode
   * 
   * @param input
   *      待傳入字符串
   * @return
   */
  public static String toUnicode(String input) {
    input = input.trim();
    String output = escape(input).toLowerCase().replace("%u", "\\u");
    return output.replaceAll("(?i)%7b", "{").replaceAll("(?i)%7d", "}").replaceAll("(?i)%3a", ":")
        .replaceAll("(?i)%2c", ",").replaceAll("(?i)%27", "'").replaceAll("(?i)%22", "\"")
        .replaceAll("(?i)%5b", "[").replaceAll("(?i)%5d", "]").replaceAll("(?i)%3D", "=")
        .replaceAll("(?i)%20", " ").replaceAll("(?i)%3E", ">").replaceAll("(?i)%3C", "<")
        .replaceAll("(?i)%3F", "?").replaceAll("(?i)%5c", "\\");
  }

  /**
   * 測試
   * 
   * @param args
   */
  public static void main(String[] args) {
    System.out.println(toUnicode("你好"));
    System.out.println(toGb2312("\u4f60\u597d"));
    // 等同于上面
    System.out.println(toGb2312("\\u4f60\\u597d"));
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java多線程編程實現socket通信示例代碼

    Java多線程編程實現socket通信示例代碼

    這篇文章主要介紹了Java多線程編程實現socket通信示例代碼,詳細介紹了tcp、udp協議,以及基于socket的Java網絡編程的相關內容及代碼示例,代碼測試可用,供大家參考。
    2017-10-10
  • 使用gRPC微服務的內部通信優(yōu)化

    使用gRPC微服務的內部通信優(yōu)化

    這篇文章主要為大家介紹了微服務優(yōu)化之使用gRPC做微服務的內部通信,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • 使用Spring的AbstractRoutingDataSource實現多數據源切換示例

    使用Spring的AbstractRoutingDataSource實現多數據源切換示例

    這篇文章主要介紹了使用Spring的AbstractRoutingDataSource實現多數據源切換示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • 解決Springboot @WebFilter攔截器未生效問題

    解決Springboot @WebFilter攔截器未生效問題

    這篇文章主要介紹了解決Springboot @WebFilter攔截器未生效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 教你Springboot如何實現圖片上傳

    教你Springboot如何實現圖片上傳

    這篇文章主要介紹了教你Springboot如何實現圖片上傳,首先大家明白圖片上傳,需要在數據庫定義一個varchar類型的img字段圖片字段,本文結合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • Java Set接口及常用實現類總結

    Java Set接口及常用實現類總結

    Collection的另一個子接口就是Set,他并沒有我們List常用,并且自身也沒有一些額外的方法,全是繼承自Collection中的,因此我們還是簡單總結一下,包括他的常用實現類HashSet、LinkedHashSet、TreeSet的總結
    2023-01-01
  • java編寫Http服務器下載工具

    java編寫Http服務器下載工具

    這篇文章主要介紹了java編寫Http服務器下載工具的方法,工具很簡單,功能也很簡單,代碼就更簡潔了,卻非常實用,有需要的小伙伴參考下吧。
    2015-03-03
  • SpringBoot配置的加載流程詳細分析

    SpringBoot配置的加載流程詳細分析

    了解內部原理是為了幫助我們做擴展,同時也是驗證了一個人的學習能力,如果你想讓自己的職業(yè)道路更上一層樓,這些底層的東西你是必須要會的,這篇文章主要介紹了SpringBoot配置的加載流程
    2023-01-01
  • 詳解Idea中HTTP Client請求測試工具的使用

    詳解Idea中HTTP Client請求測試工具的使用

    今天抽空給大家分享Idea中HTTP Client請求測試工具的使用,小編在這建議使用HTTP Client的Idea版本最好在2018以上,不然的話體驗不是多好,今天就給大家介紹Idea中HTTP Client怎么使用的,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • java常見報錯及解決方案總結

    java常見報錯及解決方案總結

    這篇文章主要介紹了Java編程中常見錯誤類型及示例,包括語法錯誤、空指針異常、數組下標越界、類型轉換異常、文件未找到異常、除以零異常、非法線程操作異常、方法未定義異常、死鎖和類未找到異常,文中通過代碼將解決方案介紹的非常詳細,需要的朋友可以參考下
    2025-03-03

最新評論

于都县| 昌黎县| 海淀区| 宣化县| 封丘县| 金门县| 盱眙县| 龙川县| 扬州市| 九龙坡区| 高要市| 托克托县| 南丰县| 鹤峰县| 宿松县| 镇沅| 宜良县| 垫江县| 双鸭山市| 施甸县| 绥化市| 旬邑县| 南宁市| 广水市| 木里| 宁都县| 乐安县| 札达县| 利津县| 马山县| 汝城县| 土默特左旗| 芜湖县| 沅陵县| 溆浦县| 汾阳市| 苍南县| 天水市| 新绛县| 昌都县| 佛教|