黑马程序员技术交流社区

标题: Properties类中load方法疑惑 [打印本页]

作者: 黑马十八期0513    时间: 2012-12-25 16:13
标题: Properties类中load方法疑惑
import java.io.*;
import java.util.*;
class PropertiesDemo
{
     public static void main(String []args) throws IOException
     {
         Properties prop =new Properties();
        FileInputStream fis =new FileInputStream("info.txt");
       prop.laod(fis);
      System.out.println(prop);
     }
}
一个很简单的将流加载进集合的的load方法,但是中间发生了一些问题。我的info.txt文档里有中文,在传入InputStream字节流的时候,运行结果出现乱码,但是转用FileReader字符流传入的时候就没有任何问题。
我的info.txt文档里的内容,有中文:
张三=20;
李四=35;
王五=40;
后来我查阅API文档时发现,load(InputStream)方法默认传入的是ISO 8859-1字符编码表,是不是说如果info.txt中有中文,就一定不能使用 load(InputStream),而只能传入 Reader字符流?

未命名.jpg (32.72 KB, 下载次数: 133)

运行结果中的中文被?替代

运行结果中的中文被?替代

未命名1.jpg (45.64 KB, 下载次数: 132)

API文档load(InputSteam inStream)方法截图

API文档load(InputSteam inStream)方法截图

作者: 黄锦成    时间: 2012-12-25 16:25
应该可以修改编码吧
作者: 马志军    时间: 2012-12-25 16:32
改成FileReader fis =new FileReader("info.txt");
作者: 黄嵘才    时间: 2012-12-25 17:11
是的,字节流会把中文截取成单字节。有一个转换流可以使用。InputStreamReader,和OutputStreamWriter.
把字节 流转换成字符流。
作者: 陈泽鑫    时间: 2012-12-25 17:26
可以使用转换流直接指定编码




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