用native2ascii工具将中文字符转换成类似下面的unicode字符,保存在test.txt中:
\u5c0f\u8717现在想读取test.txt中的unicode字符,并把它转换回中文显示到Frame上,怎么处理?最好有示例代码,谢谢!

解决方案 »

  1.   

    public class test
    {
    public static void main(String[] args){
    String c = "\u5c0f\u8717";
    System.out.println(""+c); }
    };
      

  2.   

    这个属于本地化的问题。那么你的文件最后是采用properties文件的格式,java里面有一套现成的api可以使用。查查文档就清楚了。
      

  3.   

    开始的那种算法是不行的,程序中的String和从文本中读入的String是两回事!
      

  4.   

    如果要代码的例子其实你自己机器上就有。看看你jdk安装目录下的demo文件夹,里面的jfc就有很多例子!
      

  5.   

    学习
    Locale locale = Locale.getDefault();
    ResourceBundle bundle = ResourceBundle.getBundle("test",locale); 
    System.out.println(""+bundle.getString("Title"));
    那可能要把test.txt改为test.properties.并在前面加个Title=
      

  6.   

    谢谢上面两位的回答。TO:38度的雪我看了jfc的例子了,那些都是读properties文件,我不是要把中文存成properties文件,而是以逗号隔开的csv文件,这种情况怎么读呢?例如:\u5c0f\u8717,\u5c0f\u8717,\u5c0f\u8717,\u5c0f\u8717
      

  7.   

    不过,你为什么不用properties文件呢?
    java社区都是这么做的,何必在这个地方标新立异呢!
    更何况这样还可以和简单的切换语言。
      

  8.   

    import java.util.*; 
    import java.io.*;
    public class MyNative{ 
    public static void main(String [] args) throws Exception{ 
            Properties properties = new Properties();
            properties.load(new FileInputStream("test.scv"));
            for(Iterator iter = properties.entrySet().iterator();iter.hasNext();){
             String s = iter.next().toString();
             System.out.println("::"+s.substring(0,s.length()-1));
            }

    }
      

  9.   

    不过用上面properties的方法也是可以的。有","没有关系。
    一样可以在前面加Title=\u5c0f\u8717,\u5c0f\u8717,\u5c0f\u8717,\u5c0f\u8717
    它还是会打印出:小蜗,小蜗,小蜗
      

  10.   

    /*
         * Converts encoded \uxxxx to unicode chars
         * and changes special saved chars to their original forms
         */
        private String loadConvert (char[] in, int off, int len, char[] convtBuf) {
            if (convtBuf.length < len) {
                int newLen = len * 2;
                if (newLen < 0) {
            newLen = Integer.MAX_VALUE;
        } 
        convtBuf = new char[newLen];
            }
            char aChar;
            char[] out = convtBuf; 
            int outLen = 0;
            int end = off + len;        while (off < end) {
                aChar = in[off++];
                if (aChar == '\\') {
                    aChar = in[off++];   
                    if(aChar == 'u') {
                        // Read the xxxx
                        int value=0;
        for (int i=0; i<4; i++) {
            aChar = in[off++];  
            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.");
                            }
                         }
                        out[outLen++] = (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'; 
                        out[outLen++] = aChar;
                    }
                } else {
            out[outLen++] = (char)aChar;
                }
            }
            return new String (out, 0, outLen);
        }这是 java.util.Properties 类中的源代码,将字符串 "\\uxxxx" 转换成一个字符,让人有些泄气。
      

  11.   

    我的blog上面有
    http://blog.csdn.net/whoopee