我有一个REST Web服务,它以JSON(作为多部分表单数据)的形式输入。输入字符串编码,需要原始字符串 - Java代码
@POST
@Consumes ({"application/ds-json",MediaType.APPLICATION_FORM_URLENCODED,MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,"text/html",MediaType.MULTIPART_FORM_DATA})
@Produces({ text_html, "application/ds-json" })
@Path("/abc")
public Response abc(@Context HttpServletRequest req, @Context HttpServletResponse response){
.
.
.
.
String strInput = inputJSON.getString("data");
.
.
.
}
输入JSON,我送是{"data":"Sécurité"}
,而串strInput
我得到的价值是Sécurité
我试图java.net.URLDecoder.decode(strInput, "iso-8859-1")
将其解码回其原有的特色,但未能成功。
我也试过String strInput = new String((inputJSON.getString("data")).getBytes(), "iso-8859-1");
预期传入的字符将按照需求存储在变量strInput
中,但失败。
我觉得完全迷失在这里。有人可以帮忙吗?
编辑:
更清晰,下面是究竟如何我送了JSON这一服务(仅用于测试目的):
- 我已经创建了一个HTML页面可以发送POST请求的Web服务
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="http://localhost:8080/xxxx/abc" method="POST" enctype="multipart/form-data">
JSON:
<input type="text" name="data">
<input type="submit" name="submit">
</form>
</body>
</html>
- 在页面,我输入文本作为使用
UTF-16
Sécurité
尝试UTF-8或UTF-16,可能? –
你在哪里看到错误的编码字符串?在你的IDE,数据库或其他地方? – Patrick
在我的IDE,后来我送这个字符串用作电子邮件主题行的电子邮件通知。还有它显示为相同的'Sécurité' –