org.json.simple.JSONObject编码异常:★显示为★求助
解决Gson读取JSON时特殊字符(如★)乱码的问题
嘿,这个问题我之前也踩过坑,本质是字符编码不匹配搞的鬼!你看到的★其实是★被错误编码后转成的乱码序列,核心原因是你用InputStreamReader时没指定编码,它默认用了系统平台的编码(比如Windows上常是GBK),但你的JSON文件大概率是UTF-8编码的,两者不匹配就会把多字节的特殊字符拆错。
解决方案:明确指定UTF-8编码读取文件
JSON标准推荐使用UTF-8编码,所以直接在InputStreamReader里指定UTF-8就能解决问题,修改后的代码如下:
import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.stream.JsonReader; import org.json.JSONObject; import java.io.FileInputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; // 你的业务代码上下文 JsonReader jsonReader = new JsonReader( new InputStreamReader( new FileInputStream(currentFile), StandardCharsets.UTF_8 // 关键:明确指定UTF-8编码 ) ); jsonReader.beginArray(); Gson gson = new GsonBuilder().create(); while (jsonReader.hasNext()) { JSONObject currentJsonObject = gson.fromJson(jsonReader, JSONObject.class); // 现在处理currentJsonObject,★应该能正常显示了 }
额外检查点
- 确认你的JSON文件确实是UTF-8编码保存的:可以用VS Code、Notepad++等编辑器打开文件,查看右下角的编码标识,要是其他编码(比如GBK),直接转成UTF-8保存再试。
- Gson本身默认支持UTF-8,不需要额外配置,只要读取时编码正确就没问题。
内容的提问来源于stack exchange,提问作者riorio
相关产品推荐
相关产品推荐

