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

如下所示:

package test.com.gjob.services;
  import java.util.Properties;
   public class Test {
      public static void main(String[] args) {
      String s = "简介";
      String tt = gbEncoding(s);
  //    String tt1 = "你好,我想给你说一个事情";
      System.out.println(decodeUnicode("\\u7b80\\u4ecb"));
  //    System.out.println(decodeUnicode(tt1));
      System.out.println(HTMLDecoder.decode("中国"));
      String s1 = "\u7b80\u4ecb";
      System.out.println(s.indexOf("\\"));
     }
     public static String gbEncoding(final String gbString) {
     char[] utfBytes = gbString.toCharArray();
        String unicodeBytes = "";
        for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) {
           String hexB = Integer.toHexString(utfBytes[byteIndex]);
            if (hexB.length() <= 2) {
              hexB = "00" + hexB;
           }
            unicodeBytes = unicodeBytes + "\\u" + hexB;
          }
          System.out.println("unicodeBytes is: " + unicodeBytes);
          return unicodeBytes;
       } 

       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);
           }
           char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。
          buffer.append(new Character(letter).toString());
          start = end;
         }
         return buffer.toString();
       }
     }
public static String decodeUnicode(String theString) {  

   char aChar;  

   int len = theString.length();  

   StringBuffer outBuffer = new StringBuffer(len);  

   for (int x = 0; x < len;) {  

   aChar = theString.charAt(x++);  

   if (aChar == '\\') {  

    aChar = theString.charAt(x++);  

    if (aChar == 'u') {  

    // Read the xxxx  

    int value = 0;  

    for (int i = 0; i < 4; i++) {  

     aChar = theString.charAt(x++);  

     switch (aChar) {  

     case '0':  

     case '1':  

     case '2':  

     case '3':  

    case '4':  

     case '5':  

     case '6':
      case '7':
      case '8':
      case '9':
      value = (value << 4) + aChar - '0';
      break;
      case 'a':
      case 'b':
      case 'c':
      case 'd':
      case 'e':
      case 'f':
      value = (value << 4) + 10 + aChar - 'a';
      break;
      case 'A':
      case 'B':
      case 'C':
      case 'D':
      case 'E':
      case 'F':
      value = (value << 4) + 10 + aChar - 'A';
      break;
      default:
      throw new IllegalArgumentException(
       "Malformed  \\uxxxx  encoding.");
      }  

     }
     outBuffer.append((char) value);
     } else {
     if (aChar == 't')
      aChar = '\t';
     else if (aChar == 'r')
      aChar = '\r';  

     else if (aChar == 'n')  

      aChar = '\n';  

     else if (aChar == 'f')  

      aChar = '\f';  

     outBuffer.append(aChar);  

     }  

    } else  

    outBuffer.append(aChar);  

    }  

    return outBuffer.toString();  

   }

以上这篇java中unicode和中文相互转换的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java String字符串和Unicode字符相互转换代码

    java环境安装后jdk的bin目录有个native2ascii.exe可以实现类似的功能,但是通过java代码也可以实现同样的功能. 字符串转换unicode java方法代码片段: 复制代码 代码如下: /**  * 字符串转换unicode  */ public static String string2Unicode(String string) {       StringBuffer unicode = new StringBuffer();       for (int i = 0

  • java实现汉字转unicode与汉字转16进制实例

    本文实例讲述了java实现汉字转unicode与汉字转16进制的实现方法.分享给大家供大家参考.具体实现方法如下: 一.汉字转unicode 复制代码 代码如下: public static String toUnicode(String s) {         String as[] = new String[s.length()];         String s1 = "";         for (int i = 0; i < s.length(); i++)   

  • java unicode转码为中文实例

    复制代码 代码如下: package com.infomorrow.parser_report; import org.junit.Test; public class Decode {    @Test    public void test(){        String uString = "\\u9053\\u8def";        System.out.println(ascii2native(uString));//道路    } public static Stri

  • java中unicode和中文相互转换的简单实现

    如下所示: package test.com.gjob.services; import java.util.Properties; public class Test { public static void main(String[] args) { String s = "简介"; String tt = gbEncoding(s); // String tt1 = "你好,我想给你说一个事情"; System.out.println(decodeUnicod

  • 浅谈Java中Unicode的编码和实现

    Unicode的编码和实现 大概来说,Unicode编码系统可分为编码方式和实现方式两个层次. 编码方式 字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值."A"是一个字符,"€"也是一个字符.字符集是字符的集合.编码字符集是一个字符集,它为每一个字符分配一个唯一数字. Unicode 最初设计是作为一种固定宽度的 16 位字符编码.也就是每个字符占用2个字节.这样理论上一共最多可以表示216(即65536)个字符.上述16位统一码字符构成基

  • Java中获取类路径classpath的简单方法(推荐)

    如下所示: <SPAN style="FONT-SIZE: 18px"> System.out.println("++++++++++++++++++++++++"); String path = System.getProperty("java.class.path"); String path2 = FreeMarkerWriter.class.getProtectionDomain().getCodeSource().getLo

  • Java中HttpServletResponse响应中文出现乱码问题

    以字符串的形式输出. 1.response.getWriter().write("您好中国hello"); 如果这样输出的话.则浏览器结果为: 2.加上代码 response.setCharacterEncoding("UTF-8"); response.getWriter().write("您好中国hello"); 则浏览器结果为: 这是因为浏览器解析问题. 加上代码: response.setHeader("Content-type

  • Java中URL传中文时乱码的解决方法

    前言 Java中URL传中文时乱码的问题相信不少朋友都遇到过,最近就遇到一个问题,就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题. 解决办法 1.对要进行URL传递的中文字符进行编码: String message = java.net.URLEncoder.encode("中文字符","utf-8"); 2.在取URL传递中文的页面对字符进行解码: S

  • Java中List与数组相互转换实例分析

    本文实例分析了Java中List与数组相互转换的方法.分享给大家供大家参考.具体如下: 今天写代码遇到一个奇怪的问题,具体代码不贴出了,写一个简化的版本.如下: ArrayList<String> list=new ArrayList<String>(); String strings[]=(String [])list.toArray(); 这样写代码个人觉得应该没什么问题,编译也没有问题.可是具体运行的时候报异常,如下:Exception in thread "mai

  • Java中的泛型方法详解及简单实例

      java 泛型方法: 泛型是什么意思在这就不多说了,而Java中泛型类的定义也比较简单,例如:public class Test<T>{}.这样就定义了一个泛型类Test,在实例化该类时,必须指明泛型T的具体类型,例如:Test<Object> t = new Test<Object>();,指明泛型T的类型为Object. 但是Java中的泛型方法就比较复杂了. 泛型类,是在实例化类的时候指明泛型的具体类型:泛型方法,是在调用方法的时候指明泛型的具体类型.   定

  • Java中防止数据重复提交超简单的6种方法

    目录 前言 模拟用户场景 前端拦截 后端拦截 1.基础版--HashMap 2.优化版--固定大小的数组 3.扩展版--双重检测锁(DCL) 4.完善版--LRUMap 5.最终版--封装 扩展知识--LRUMap 实现原理分析 总结 前言 有位朋友,某天突然问东哥:在 Java 中,防止重复提交最简单的方案是什么? 这句话中包含了两个关键信息,第一:防止重复提交:第二:最简单. 于是东哥问他,是单机环境还是分布式环境? 得到的反馈是单机环境,那就简单了,于是东哥就开始装*了. 话不多说,我们先

  • java 中cookie的详解及简单实例

    java 中cookie的详解 Java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题. 建立一个无生命周期的cookie,即随着浏览器的关闭即消失的cookie,代码如下 HttpServletRequest request HttpServletResponse response Cookie cookie = new Cookie("cookiename","cookievalue&

  • Java中Date与String相互转换的方法

    我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需要一个日期类型,反过来,在页面上显示的时候,需要从数据库获取出生日期,此时该类型为日期类型,然后需要将该日期类型转为字符串显示在页面上,Java的API中为我们提供了日期与字符串相互转运的类DateForamt.DateForamt是一个抽象类,所以平时使用的是它的子类SimpleDateFormat.SimpleDateFormat有4个构造函数,

随机推荐