繁体   English   中英

在Java中将Latin-1(ISO-8859-1)转换为utf-8字符串

[英]Escape Latin-1 ( ISO-8859-1) to utf-8 String in Java

我尝试使用Gsonorg.json作为示例。 我也尝试了Commons Text ,但是当我手动导入库时,我不能为我工作(我不允许使用Maven)。 所以我决定寻找另一种解决方案。

NoClassDefFoundError:org / apache / commons / text / StringEscapeUtils

我需要以这种方式将数组转义为Json。 特别是Óó或任何拉丁语1字符(不逃避" ,只是逃避"&%$/"Helló" )。 Helló / // \\ "WÓRLD"Helló / // \\ "WÓRLD"

{"token":"045-245","message":"Helló / // \\ \"WÓRLD\" "}

{"token":"045-245","message":"Hell\u00F3 / // \\ \"W\u00D3RLD\" "}

这是我用的时候得到的:

GSON

JsonObject json = new JsonObject();
json.addProperty("token", "045-245");
json.addProperty("message", "Helló WÓRLD");
String payload = new Gson().toJson(json);
System.out.println(payload);

结果:

{"token":"045-245","message":"Helló WÓRLD"}

org.json

JSONObject jsonObject = new JSONObject();        
jsonObject.put("token", "045-245");
jsonObject.put("message", "Helló WÓRLD");
System.out.println(jsonObject.toString());

结果:

{"message":"Helló WÓRLD","token":"045-245"}

感谢@dnault我找到了杰克逊杰森图书馆。 我需要导入com.fasterxml.jackson.corecom.fasterxml.jackson.databind 我也导入了com.fasterxml.jackson.annotations ,因为JDK 8没有问题。

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class Foo {

    ObjectMapper mapper = new ObjectMapper();
    mapper.getFactory().configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, true);
    ObjectNode node = mapper.getNodeFactory().objectNode();
    node.put("token", "045-245");
    node.put("message", "Helló / // \\ \"WÓRLD\" ");
    System.out.println(mapper.writeValueAsString(node));

}

输出:

{"token":"045-245","message":"Hell\u00F3 / // \\ \"W\u00D3RLD\" "}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM