在客户端 - 服务器应用程序中使用特殊字符编码和解码字符串

时间:2018-03-06 15:01:27

标签: java android rest encoding utf-8

我正在开发我的客户端 - 服务器应用程序(服务器就像一个servlet,客户端是一个Android应用程序)。当消息有特殊字符(即:'è'或其他)时,我在两个实体之间发送信息时遇到一些困难

在客户端,我使用此代码发送可能包含特殊字符的消息:

public static String effettuaPOSTServer (String parameters) {
    try {
        byte [] parametersBytes = parameters.getBytes("UTF-8");
        URL url = new URL("http://" + IP_SERVER + ":" + PORT + PATH_SERVLET);
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setConnectTimeout(10000);
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content_Type", "application/x-www-form-urlencoded; charset=utf-8");
        connection.setRequestProperty ("Content-Length", String.valueOf (parametersBytes.length));
        connection.setDoOutput(true);

        DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
        wr.write(parametersBytes);
        wr.flush();
        wr.close();

        BufferedReader br = new BufferedReader (new InputStreamReader(connection.getInputStream(), "UTF-8"));
        StringBuilder sb = new StringBuilder ();
        String s;

        while ((s = br.readLine ()) != null) {
            sb.append (s);
            sb.append ("\n");
        }

        return sb.toString();

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (ProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return null;
}

在服务器端我使用此代码发送响应(响应可以包含特殊字符,如'è'和其他)(我在servlet doPost上下文中,所以我使用HttpServletRequest请求和HttpServletResponse响应):

PrintWriter pw = response.getWriter();
...
String content = ...; //the string is formatted in JSON format
pw.println (content);

但在双方都无法接收和管理我有特殊字符的正确字符串。

我正在网上尝试很多关于编码/解码等的解决方案,但没有成功的结果。 我该如何解决我的问题?谢谢!

编辑: 例如,从我的客户端看到我的请求如下(我用GET格式报告请求以简单说明案例):

http://MY_URL:PORT/MY_PATH?parameter1=value1&parameter2=value2&parameter3=èqualcosaacaso

但在服务器上我收到:

parameter1=value1
parameter2=value2
parameter3=Äqualcosaacaso

0 个答案:

没有答案