httpurlconnection和特殊字符

时间:2016-05-27 06:33:58

标签: android

我可以用我的应用程序发送一个http帖子。 问题是,ä,ö等特殊字符不正确。

这是我的代码:

@Override
        protected String doInBackground(String... params) {
            try {

                URL url = new URL("https://xxx");
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                String urlParameters =  "&name" + name;


                connection.setRequestMethod("POST");
                connection.setRequestProperty("Accept-Charset", "UTF-8");
                connection.setDoOutput(true);
                DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
                dStream.writeBytes(urlParameters);
                dStream.flush();
                dStream.close();


            } catch (MalformedURLException e) {
                Log.e("-->", Log.getStackTraceString(e));
            } catch (IOException e) {
                Log.e("-->", Log.getStackTraceString(e));
            }
            return null;
        }

此http帖子将发送到php文件,该文件将值名称保存到数据库中。

实施例: 该应用程序发送值“Getränke” 结果在数据库中:“Getr”

我的错误在哪里?

2 个答案:

答案 0 :(得分:0)

Java中的内部字符串表示形式始终为UTF-16。

当字符串进入或离开VM时,必须完成每个编码。这意味着在您的情况下,您必须在将正文写入流时设置编码。

尝试以下操作:

 dStream.writeBytes(urlParameters.getBytes("UTF-8"));

此外,您可能需要在Content-Type标头中设置编码。

将其设为"application/x-www-form-urlencoded; charset=utf-8" 目前您只设置Accept-Charset - 这告诉服务器要发回的内容。

答案 1 :(得分:0)

试试这可能会对你有帮助。

您需要在Content-Type标头中设置编码。

将其设为application/x-www-form-urlencoded; charset=utf-8。代替  Accept-Charset