本帖最后由 maleangel 于 2009-12-06 04:20:22 编辑

解决方案 »

  1.   

    代码没有问题。问题在于0xDF08不是一个有效的UTF-8编码。
    如果用UTF-8编码方式向文件中写入0xDF08,内容已经变成0x003F了。详细情况请参考
    http://www.fileformat.info/info/unicode/char/df08/index.htm建议象properties处理UTF-8编码的方式。将"\\ued13\udf08\\ufd09"直接写到文本文件中。
    然后从文本文件中读入"\\ued13\udf08\\ufd09"后再转成char数组。
    可参考下面的讨论
    http://topic.csdn.net/u/20091127/14/5aeb4b6d-9e6e-4131-97fa-101a806ac0ed.html?45940#replyachor
      

  2.   

    udf08,这个字符有问题
    它写入到本地文件中,就出问题了,应该是没有这个字符吧
      

  3.   

    在Unicode编码中,替代区域U+D800-U+DFFF是一个很特殊的区域,这个区域的代码点并不表示一个字符。它的作用是为使用UTF-16编码方式编码Unicode附加级别代码点(20bit)而设置的。具体参见:《低级的char类型》。在UTF-8编码里面,不能在(U+D800-U+DFFF)区域进行编码的。
      

  4.   

    看下我之前 回复的问题 
    代码如下
    http://topic.csdn.net/u/20091127/14/5aeb4b6d-9e6e-4131-97fa-101a806ac0ed.html?45940#replyachor
            //System.out.println("\u6C49");
            FileOutputStream fos = new FileOutputStream(new File("D:/1.txt"));
            OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
            BufferedWriter bw = new BufferedWriter(osw);
            bw.write("\u6C49");
            bw.write("\u6C49");
            bw.write("\u6C49");
            bw.close();        FileInputStream fis = new FileInputStream(new File("D:/1.txt"));
            InputStreamReader osi = new InputStreamReader(fis, "UTF-8");
            BufferedReader br = new BufferedReader(osi);
            String str = null;
            while ((str = br.readLine()) != null)
            {
                System.out.println(str);
            }
        }
      

  5.   

    看来是windows造的孽,utf-8本身应该是支持的(内存中可以解码),只是本地化成文件后丢失了.本来想自己写套基于UTF-8的加密逻辑的.看来没戏了.