在提到我的主要问题之前有一点背景
我们有一个模块通过FasterXML将POJO转换为JSON。逻辑是有多个XML首先转换为POJOS然后转换为JSON。
然后将这些多个JSON中的每一个分成单个JSON并由第三方处理。
问题一直持续到Single JSON形成,一切看起来都很好。
将所有JSON合并并写入文件后,本地化字符全部被编码,而我们希望它们看起来与单个JSON中的外观相同
例如Single JSON代码段
{" title":" Webサーバに关するお知らせ"}
例如Merged JSON Snippet
{" title":" Web \ u30b5 \ u30fc \ u30d0 \ u306b \ u95a2 \ u308 \ u308b \ u304a \ u77e5 \ u3089 \ u305b"}
byte[] jsonBytes = objectMapper.writeValueAsBytes(object);
String jsonString = new String(jsonBytes, "UTF-8");
然后将此JSON字符串写入文件
BufferedWriter writer = new BufferedWriter(new FileWriter(finalJsonPath));
writer.write(jsonString);
还尝试了以下内容,因为我认为我们需要UTF-8编码来处理本地化字符
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(finalJsonPath),"UTF-8"));
writer.write(jsonString);
同样的objectmapper代码也用于写入单个json,编码不会出现在那个点上。
任何人都可以指出在合并的JSON级别导致编码问题的原因吗?
PS:代码是部署在tomcat上的战争的一部分。最初我们可以看到??? (在JSON中的问号)之后我们将以下内容添加到catalina.sh
JAVA_OPTS =" $ JAVA_OPTS -Dfile.encoding = UTF-8"
后来,我还添加了servlet请求编码但没有帮助
JAVA_OPTS =" $ JAVA_OPTS -Dfile.encoding = UTF-8 -Djavax.servlet.request.encoding = UTF-8"
谢谢!
答案 0 :(得分:0)
刚观察到代码正在处理合并的json。它在合并的json上运行native2ascii命令,因为json本地化内容被转换为ASCII字符
我使用-reverse选项在json上运行native2ascii,我的发现得到了确认。 -reverse还原了ascii编码