[英]Java UTF-8 encoding not working HttpURLConnection
我尝试进行后调用并使用此值传递输入 - “ä€हहที่”我收到错误消息
{"error":{"code":"","message":{"lang":"en-US","value":{"type":"ODataInputError","message":"Bad Input: Invalid JSON format"}}}}
这是我的代码
conn.setRequestMethod(ConnectionMethod.POST.toString());
conn.setRequestProperty(CONTENT_LENGTH, Integer.toString(content.getBytes().length));
conn.setRequestProperty("Accept-Charset", "UTF-8");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes(content);
wr.flush();
wr.close();
InputStream resultContentIS;
String resultContent;
try {
resultContentIS = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(resultContentIS));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
它在conn.getInputStream()上失效;
内容的价值是
{ "input" : "ä€愛لآहที่" }
它在输入为String或整数的地方工作
当我添加声明时
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
我得到了不同的信息
{"error":{"code":"","message":{"lang":"en-US","value":{"type":"Error","message":"Internal server error"}}}}
请尝试以下代码:
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(wr, "UTF-8"));
writer.write(content);
writer.close();
wr.close();
您应该使用JSONObject传递params
输入,请尝试
BufferedReader reader = new BufferedReader(new InputStreamReader(resultContentIS, "UTF-8"));
如果输出是:???????,所以不要担心,因为你的输出控制台不支持UTF-8
您的变量内容似乎已经有错误的数据,因为您可能已经转换了一个String而没有注意所需的编码。
在writer上设置正确的enconding并使用write()
而不是writeBytes()
应该值得一试。
您必须通过字节数组发送内容
DataOutputStream outputStream= new DataOutputStream(conn.getOutputStream());
outputStream.write(content.toString().getBytes());
这是您的文件名字符问题的完全解决方案。 导入的点是通过字节数组发送的字符串。 每个字符都通过字节字符更改。 这可以防止您的字符编码问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.