(org.json.JSONObject类)java使用JSONObject读取json文件,出现中文乱码

出现问题的代码

//从json文件中读取数据
		StringBuffer stringBuffer = new StringBuffer();
		try {
			BufferedReader bufferedReader = 
					new BufferedReader(new InputStreamReader(new FileInputStream(file)));
			String line;
			while((line=bufferedReader.readLine()) != null) {
				stringBuffer.append(line);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//开始解析
		JSONObject jsonObject = new JSONObject(stringBuffer.toString());

解决

根据网上描述,将文件设置为 UTF-8 编码,但是如果保存为 UTF-8 编码文件,会在文件头中多上3字节标识编码类型的数据,而导致JSONObject对象解析失败,原因:不是以 { 开头。
思路 :我们用编辑其打开, UTF-8 编码格式正常显示,然后使用二进制编辑工具,删除文件头的 UTF-8 标识 EF BB BF ,然后在代码中,使用 InputStreamReader 让数据 从字节流到字符流 的过程中使用 UTF-8编码

BufferedReader bufferedReader = 
					new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));

版权声明:本文为github_38641765原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。