Строки на иврите, отправленные на веб-сервер, не принимаются на иврите

Я отправляю форму регистрации из своего приложения на веб-сервер:

EditText email = (EditText)findViewById(R.id.email);
EditText password = (EditText)findViewById(R.id.password);
EditText nickname = (EditText)findViewById(R.id.nickname);

List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("email", email.getText().toString()));
params.add(new BasicNameValuePair("password", password.getText().toString()));
params.add(new BasicNameValuePair("nickname", nickname.getText().toString()));

HttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
request.setEntity(new UrlEncodedFormEntity(params));
HttpResponse response = httpClient.execute(request);

Когда я набираю никнейм на иврите, он принимается сервером (php/apache) в виде строки той же длины, что и никнейм, но с символами, которые "невидимы", т.е. выглядят как пробелы. точно не иврит. Кто-нибудь подскажет?


person shaharsol    schedule 13.09.2011    source источник


Ответы (1)


Я думаю, что просто выполнение request.setEntity(new UrlEncodedFormEntity(params)); кодирует ваши параметры в DEFAULT_CONTENT_CHARSET (см. http://developer.android.com/reference/org/apache/http/client/entity/UrlEncodedFormEntity.html).

Вероятно, вам следует использовать форму UrlEncodedFormEntity(List<? extends NameValuePair> parameters, String encoding). В Froyo/Android 2.2 добавлена ​​поддержка отображения текста на иврите и арабском (среди других языков), включая необходимые шрифты, но я все еще ищу строку кодировки иврита...

Вы пробовали кодировать как «UTF-8» или «UTF-16»?

person Torid    schedule 13.09.2011
comment
Спасибо. Я попробую это. Однако я подозреваю, что строка отправлена в utf8, поскольку я запускаю PHP mb_detect_encoding на стороне сервера, и она возвращает «UTF8». - person shaharsol; 14.09.2011
comment
Интересно, проблема на стороне веба? Если вы отправляете его как UTF-8, но на веб-странице нет чего-то вроде ‹meta http-equiv=Content-Type content=text/html; charset=utf-8›, возможно, веб-сайт неправильно интерпретирует символы? - person Torid; 14.09.2011
comment
Я проверил это сейчас с помощью request.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); и это сработало как шарм! Спасибо! - person shaharsol; 14.09.2011