在使用java io流读取文件时的乱码问题
在使用java io流读取文件时的乱码问题
柳初心 发表于7个月前
在使用java io流读取文件时的乱码问题
  • 发表于 7个月前
  • 阅读 23
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

	public void init() throws ServletException {
		// 初始化阶段,读取new_words.txt
		// web工程中读取 文件,必须使用绝对磁盘路径
		String path = getServletContext().getRealPath("/WEB-INF/new_words.txt");
		try {
			BufferedReader reader = new BufferedReader(new FileReader(path));
			String line;
			while ((line = reader.readLine()) != null) {
				words.add(line);
			}
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

问题的原因是

FileReader读取文件时默认以系统的编码为准,在代码中容易出现GBK->utf-8的自动转换,产生乱码。

解决方式如下

	public void init() throws ServletException {
		// 初始化阶段,读取new_words.txt
		// web工程中读取 文件,必须使用绝对磁盘路径
		String path = getServletContext().getRealPath("/WEB-INF/new_words.txt");
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					new FileInputStream(path), "utf-8"));
			String line;
			while ((line = reader.readLine()) != null) {
				words.add(line);
			}
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

 

标签: Java io
共有 人打赏支持
粉丝 0
博文 31
码字总数 15977
×
柳初心
莫忘少年凌云志,曾许天下第一流。
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: