我可以用我的应用程序发送一个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”
我的错误在哪里?
答案 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
。