如果有大量的这种unicode字符串的话,将这些大量的unicode字符串保存到一个文件中,例如aa.txt,
然后在命令行当前目录下:native2ascii -encoding gbk aa.txt bb.txt
这样在bb.txt中你就可以看到这些unicode的中文字符了!

解决方案 »

  1.   

    String un="\u4e2d\u6587";
    System.out.println(un);
    这样直接就输出中文了
      

  2.   

    因为中文也可以用Unicode来表示
    他表示的是在一个范围之内,具体我不记得了
    只要在这个范围里面直接输出就没有问题
      

  3.   

    不是啊,假如只有一个
    这个中文字符串要作为String 返回的呢?
      

  4.   

    这个String随便在哪里都是直接能显示的。
    这就是避免出现中文乱码的办法
      

  5.   

    不是啊,如何实现下面的这个函数?
    private static String gbToUnicode(String s);
    传进去的s就是Unicode,如何得到要返回的String 呢?
      

  6.   


    private static String gbToUnicode(String s){
        StringBuffer sb = new StringBuffer();
        StringTokenizer st = new StringTokenizer(s, "\\u");
        while (st.hasMoreTokens()) {
          sb.append(st.nextToken());
        }
        return  sb.toString();
    }
      

  7.   

    public static String loadConvert(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();
        }
      

  8.   

    晕,kingfish啊,我回去试了,一下,按你的弄法private static String gbToUnicode(String s){
       StringBuffer ss = new StringBuffer();
       for(int i=0;i<s.length();++i){
         ss.append("\\u"+Integer.toHexString(s.charAt(i)));
       }
       String temp = new String(ss);
       return temp;
    }
    private static String unicodeToGB(String s){
        StringBuffer sb = new StringBuffer();
        StringTokenizer st = new StringTokenizer(s, "\\u");
        while (st.hasMoreTokens()) {
          sb.append(st.nextToken());
        }
        return  sb.toString();
    }
    public static void main(String[] args) {
    String ch="中文";
    String un=gbToUnicode(ch);
    String gb=unicodeToGB(un);
      System.out.println(gb);}
    最后显示的是4e2d6587,而不是"中文",所以还有点问题的啊.
      

  9.   

    噢 ,jFresH_MaN(TM) ,就是偏移一个地址是吧,刚才你是给过我,可是我看了半天没看懂,所以就,,,,不好意思啊...呵呵,现在有点感觉了,呵呵
      

  10.   

    晕,这是jdk的Properties的源代码!呵呵
      

  11.   

    private static String unicodeToGB(String s) {
        StringBuffer sb = new StringBuffer();
        StringTokenizer st = new StringTokenizer(s, "\\u");
        while (st.hasMoreTokens()) {
          sb.append( (char) Integer.parseInt(st.nextToken(), 16));
        }
        return sb.toString();
      }