Unicode 字符显示为 ??在 debian 上

Unicode char appears as ?? on debian

我正在解析从 Minecraft 服务器的 ping 请求收到的 JSON。该代码在 Windows 上运行良好,并提供以下输出:

§4§l> §f§l> §4§l> §7-=[ §5§lMythCraft §6§lNetwork §7]=- §4§l> §f§l> §4§l> §7-=[ §b§lFaction 1 Has Reset §e➸ §c§lFresh Map! §7]=-

但是,在我的 Debian VPS 上,输出的是以下内容:

??4??l> ??f??l> ??4??l> ??7-=[ ??5??lMythCraft ??6??lNetwork ??7]=- ??4??l> ??f??l> ??4??l> ??7-=[ ??b??lFaction 1 Has Reset ??e??? ??c??lFresh Map! ??7]=-

我认为这是一个编码问题。我对么?我该如何解决?

ping 代码是 here

我明白了。

我机器上的默认 charmap 不是 UTF-8,因此它无法正确处理字符,并用 ? 代替。

为了修复它,我将字符串 json 的定义更改为:

String json = new String(in, Charset.forName("UTF-8"));

这样返回的字符串将以 UTF-8 而非默认编码进行处理。