我从我的应用程序向网络服务器提交了一个注册表单:

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) 中被接收为一个与昵称长度相同的字符串,但带有“不可见”的字符,即看起来像空格。绝对不是希伯来语。有什么线索吗?

最佳答案

我认为只执行 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”?

关于android - 希伯来语中未收到提交到 Web 服务器的希伯来语字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7407566/

10-10 16:43