Приветствуем вас, я сейчас работаю над веб-сервисом, и у меня много проблем, чтобы этот метод работал с такими символами, как: ç, а, е, ... это, кажется, связано с моей входной поток, не кажется ли кодировать правильно, вот код:Проблемы с кодировкой вводаStream (Специальные символы: ñ, á, ...)
private static String sendPost(String url, Map<String, JSONObject> params) throws Exception {
String responseString;
StringBuilder urlParameters = new StringBuilder(400);
if (params != null) {
for (Entry<String, JSONObject> entry : params.entrySet()) {
urlParameters.append(entry.getKey()).append("=").append(entry.getValue().toString()).append("&");
}
}
url += urlParameters.toString();
url = url.replace(" ", "%20");
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("charset", "utf-8");
con.setDoOutput(true);
int responseCode = con.getResponseCode();
if (responseCode == HttpStatus.SC_OK) {
BufferedReader in = null;
StringBuffer response = null;
try{
//when i check 'con' all seems to be fine
in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
String inputLine;
response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
}finally{
in.close();
}
responseString = response.toString();
} else {
responseString = new StringBuilder(25).append(responseCode).toString();
}
return responseString;
}
Пример: Внутри «против» HTTP: \ direction.dom \ data \ WS \ something? param = {example: "castaña"}
и InputStream возвращает: http: \ direction.dom \ data \ WS \ something? param = {example: "casta a"}
Спасибо заранее.
Что именно вам означает «InputStream возвращает»? Вы нарушаете символы в 'responseString'? Если да, то как вы определяете, что String нарушена (в отличие от того, что вы используете для просмотра String, например, для выхода файла журнала)? – Thilo
Или специальные символы в URL * запроса *? Вероятно, они должны быть закодированы. – Thilo
Какая кодировка используется веб-сервисом для записи в поток данных? Если вы не знаете, попробуйте «Cp1252». Это Windows-1252, который по умолчанию используется в Windows для западных стран. В противном случае вы можете попытаться записать необработанные байты из входного потока в файл и попытаться открыть его с помощью текстового редактора, надеясь, что редактор сможет угадать кодировку. – vanje