A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马十八期0513 中级黑马   /  2012-12-25 16:13  /  2339 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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, 下载次数: 123)

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

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

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

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

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

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

4 个回复

倒序浏览
应该可以修改编码吧
回复 使用道具 举报
改成FileReader fis =new FileReader("info.txt");
回复 使用道具 举报
是的,字节流会把中文截取成单字节。有一个转换流可以使用。InputStreamReader,和OutputStreamWriter.
把字节 流转换成字符流。
回复 使用道具 举报
可以使用转换流直接指定编码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马