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 而非默认编码进行处理。
我正在解析从 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 而非默认编码进行处理。