You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:14:09