Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将特殊字符转换为垃圾字符的Java代码_Java_Json_Special Characters - Fatal编程技术网

将特殊字符转换为垃圾字符的Java代码

将特殊字符转换为垃圾字符的Java代码,java,json,special-characters,Java,Json,Special Characters,我面临的一个问题是,当我从Java程序发布一条带有特殊字符的json消息时,这个特殊字符(比如“in O'Reilly”)被替换为?。 如果我从邮递员那里发同样的信息,我会得到正确的回复。 你能建议如何处理这个问题吗 多谢各位 下面是我正在使用的代码和json: {“姓”:“O'Reilly”,“名”:“Shaun”} 我期望正确的输出为(当我使用postman时,我能够得到): 但是当我使用java代码('replacemented with?)时,我就明白了这一点 尝试更改您的线路: pos

我面临的一个问题是,当我从Java程序发布一条带有特殊字符的json消息时,这个特殊字符(比如“in O'Reilly”)被替换为?。 如果我从邮递员那里发同样的信息,我会得到正确的回复。 你能建议如何处理这个问题吗

多谢各位

下面是我正在使用的代码和json:

{“姓”:“O'Reilly”,“名”:“Shaun”}

我期望正确的输出为(当我使用postman时,我能够得到):

但是当我使用java代码('replacemented with?)时,我就明白了这一点


尝试更改您的线路:

post_data.addHeader("Content-Type","application/json");

此外,可能是数据正常,只有显示不正确。帮助我无数次诊断类似问题的是将“有问题的”字符串转换为Unicode序列。在那里,您可以看到数据本身是否正确,并且只有显示器损坏或数据本身损坏。 有一个开源java库MgntUtils,它有一个实用程序,可以将字符串转换为unicode序列,反之亦然:

result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);
此代码的输出为:

\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World
该库可以在或处找到,它作为maven工件提供,并带有源代码和JavaDoc


下面是这个类的JavaDoc。在该库中,还有一个非常简单的示例。

谢谢大家的帮助。它在代码的下面一行更改后工作:

StringEntity params =new StringEntity(json_req,"UTF-8");
下面的文章非常有用


如果您在控制台中打印此文件,则可能它不支持
编码当您将
json_req
打印到
System.out
时会发生什么?这将有助于确定问题是否出在输出中,正如Saharsh所建议的。请看这个问题:@Saharsh,Console支持并打印该字符。@JoachimSauer,它在Syste.out内正确打印:“lastName”:“O'Reilly”谢谢Michael的宝贵建议。当我在下面的行中更改时,它工作了:StringEntity参数=新的StringEntity(json_req,“UTF-8”);
post_data.addHeader("Content-Type","application/json; charset=utf-8");
result = "Hello World";
result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
System.out.println(result);
result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
System.out.println(result);
\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
Hello World
StringEntity params =new StringEntity(json_req,"UTF-8");