使用FileReader读取文件时VSCode终端引号显示为â??的问题排查
问题原因分析:引号乱码与文件图标异常
一、引号乱码的核心原因
- Java的
FileReader默认使用系统平台的字符编码(比如Windows默认GBK,macOS/Linux默认UTF-8)读取文件。但你的readme.txt实际是用UTF-8编码保存的(包含智能引号这类多字节特殊字符),当解码编码不匹配时,UTF-8的多字节字符被错误解析,就会出现â??这类乱码。
二、VSCode文件图标异常的关联原因
- VSCode的文件图标是依据文件编码、类型或扩展名识别的,
readme.txt图标异常是因为它的编码格式(比如带UTF-8 BOM)和另外两个正常的.txt文件不一致,导致VSCode的图标识别逻辑误判。
解决方法
1. 修复Java读取乱码
替换依赖默认编码的FileReader,改用指定UTF-8编码的InputStreamReader,确保解码和文件编码一致:
import java.io.*; import java.nio.charset.StandardCharsets; public class FileReadDemo { public static void readFile() { try{ BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream("readme.txt"), StandardCharsets.UTF_8 ) ); String line; while((line = br.readLine()) != null){ System.out.println(line); } br.close(); } catch (IOException e){ e.printStackTrace(); // 保留异常打印,方便排查问题 } } }
2. 修复VSCode文件图标异常
打开VSCode中的readme.txt,点击右下角的编码标识(比如显示GBK),选择「通过编码重新打开」->「UTF-8」,重新保存文件后,图标即可恢复正常。
内容的提问来源于stack exchange,提问作者Marc Isip
相关产品推荐
相关产品推荐

