我从我的应用程序向网络服务器提交注册表单:
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)中被接收为与昵称长度相同的字符串,但字符为“不可见”,即看起来像空格。绝对不是希伯来语。有人知道吗?
答案 0 :(得分:4)
我认为只需执行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”?