黑马程序员技术交流社区

标题: Properties Load方法出现乱码 [打印本页]

作者: flying    时间: 2014-2-21 00:27
标题: Properties Load方法出现乱码
代码如下
  1.         public static void testProperty(){
  2.                 FileInputStream fis =null;
  3.                 Properties prop = null;
  4.                 try {
  5.                         fis = new FileInputStream("F:\\1.txt");
  6.                         prop=new Properties();
  7.                         prop.load(fis);
  8.                         prop.list(System.out);       
  9.                 } catch(IOException e) {
  10.                         e.printStackTrace();
  11.                 }finally{
  12.                         try {
  13.                                 if(fis!=null)
  14.                                         fis.close();
  15.                         } catch (IOException e2) {
  16.                                 e2.printStackTrace();
  17.                         }
  18.                 }
  19.         }
复制代码
1.txt里面是:
张三=12李四=15
程序运行结果是

用的字节流 按说不应该涉及 jbk utf-8等编码表的吧?

作者: a944636422    时间: 2014-2-21 09:40
你的1.txt是以什么作为分隔符的?txt中有中文吗?txt文件一般不会存在编码问题,试试把eclipse工作区间改成utf-8的编码试试
作者: sinxy    时间: 2014-2-21 09:48
Properties使用的是ISO 8859-1编码表输入输出,而你在记事本里写的中文,记事本编码使用的不是ISO 8859-1编码表,load读取输入流时,使用的是ISO 8859-1表。所以出现????还有配置信息使用.properties存储
作者: 榨菜    时间: 2014-2-21 11:30
检查下记事本另存为的时候,选择的是什么码表
作者: flying    时间: 2014-2-21 14:14
现在可以 用字符流读入就行了  或者字节转成字符流
  1.     public static void testProperty(){
  2.         FileInputStream fis =null;
  3.             BufferedReader bufr =null;
  4.         Properties prop = null;
  5.         FileReader fr=null;
  6.         try {
  7.                     fr = new FileReader("F:\\1.txt");
  8.                 //fis = new FileInputStream("F:\\1.txt");
  9.                // bufr= new BufferedReader(new InputStreamReader(fis,"gbk"));
  10.                 prop=new Properties();
  11.                 prop.load(fr);
  12.                 prop.list(System.out);        
  13.         } catch(IOException e) {
  14.                 e.printStackTrace();
  15.         }finally{
  16.                 try {
  17.                         if(fis!=null)
  18.                                 fis.close();
  19.                 } catch (IOException e2) {
  20.                         e2.printStackTrace();
  21.                 }
  22.         }
  23. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2