Я пытаюсь отправить японские символы на сервер API, но отправленные символы были искажены и стали ????
. Поэтому я установить кодировку лица с помощью:Как отправить японские символы с помощью HttpPost
StringEntity stringEntity = new StringEntity(message, "UTF-8");
но выход стал [email protected]
. Интересно, если преобразование stringEntity
в строку вызвало это, так как я хочу отправить его на моем сервере как String
.
Вот как я использовал его:
public static String postSendMessage(String path, String message) throws Exception {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 10000); // Timeout limit
HttpPost httpPost = new HttpPost(SystemInfo.getApiUrl() + path);
List<NameValuePair> value = new ArrayList<NameValuePair>();
StringEntity stringEntity = new StringEntity(message, "UTF-8");
value.add(new BasicNameValuePair("message", stringEntity.toString())); //Here's where I converted the stringEntity to string
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(value);
httpPost.setEntity(entity);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
InputStream is = httpEntity.getContent();
String result = convertStreamToString(is);
return result;
}
Где я мог бы пойти не так?
Спасибо, мой сервер принял символы. У меня есть связанный вопрос, хотя в моем приложении я не могу загружать файлы с японскими именами файлов, например, PDF с именем - は は は .pdf. Есть ли способ установить также кодировку для загрузки? [Здесь] (http://pastebin.com/NSTycJeu). –
@ CompaqLE2202x: вы не показываете, откуда вы получаете 'url' или' pdfFilename', но в целом 'url', поскольку URI должен быть чистым ASCII. Если у вас есть IRI с символами, отличными от ASCII, вам необходимо сначала преобразовать это в URI; для части пути, которая выполняется посредством% -кодирования байтов UTF-8 для символов. 'URLEncoder.encode (имя файла,« UTF-8 »)' почти делает это (за исключением того, что оно ошибочно, вы можете заменить '+' на '% 20', чтобы исправить это). – bobince
@bobince Фактически 'pdfFileName' - это просто имя файла с расширением, а url - путь [0]', например ('http: //192.168.xx.xx/resources/upload/pdf/ は は は .pdf '). Но когда я вложил его в браузер, он стал ('http: // 192.168.xx.xx/resources/upload/pdf /% E3% 81% AF% E3% 81% AF% E3% 81% AF.pdf'). Я преобразовал «путь [0]» в «URI», а затем в «URL», как вы сказали, но потом ничего не произошло. Я также попробовал «String urlEncoded = URLEncoder.encode (путь [0],« UTF-8 »);« но вызвал «Протокол не найден». Не могли бы вы просветить меня больше? –