BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("F:/users.txt"), "utf-8"));
      String line = null;
      while ((line = br.readLine()) != null) {
        String[] arr = line.split(";");
        User user = new User();
        user.setUID(arr[0]);
        user.setUName(arr[1]);
        user.setUPwd(arr[2]);
        users.put(user.getNo(), user);
        System.out.println(user.getUID() + "," + user.getUName() + ","
            + user.getUPwd());
      }---------------------------------------------------------------------------------------------------------
文本内容:
1001;fwinsky;1234
2002;fwinsky;2123
---------------------------------------------------------------------------------------------------------
问题:
读取的结果是:
?1001;fwinsky;1234
2002;fwinsky;2123
---------------------------------------------------------------------------------------------------------
求指教,这是为何?

解决方案 »

  1.   

    工程上右键,properties,换成GBK或者U8试一下
      

  2.   

    跟编码没关系,我把读取到的字符串用bytes的方式DEBUG出来了,确实在前面多了一个值为63的byte
      

  3.   

    public static void main(String[] args) throws Exception{
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("c:/user.txt"), "utf-8"));
          String line = null;
          while ((line = br.readLine()) != null) {
            String[] arr = line.split(";");
            for(int i=0;i<arr.length;i++){
             System.out.println(arr[i]);
            }
          }
    }
    工程编码格式是GBK
    结果:1001
    fwinsky
    1234
    2002
    fwinsky
    2123
    没有问题。
      

  4.   

    文本内容:
    1001;fwinsky;1234
    2002;fwinsky;2123  System.out.println(user.getUID() + "," + user.getUName() + ","
                + user.getUPwd());
    读出的结果
     ?1001;fwinsky;1234
    2002;fwinsky;2123应该是这个吧  ?1001,fwinsky,1234
    2002,fwinsky,2123
        我想问是不是user.getUID()打印的问号
      

  5.   

    很显然是文件编码的问题。
    建议用UltraEdit或者notepad ++ 把F:/users.txt这个文件的编码格式改为UTF-8 without BOM,保存后试试。