相关疑难解决方法(0)

发送http post/put时Android默认字符集 - 特殊字符问题

我已经像这样配置了apache httpClient:

HttpProtocolParams.setContentCharset(httpParameters, "UTF-8");
HttpProtocolParams.setHttpElementCharset(httpParameters, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

我还为所有http post和put请求包含http标题"Content-Type:application/json; charset = UTF-8".

我正在尝试使用包含特殊字符的json主体发送http post/put请求(即通过Google拼音键盘输入中文字符,符号等)字符在日志中显示为乱码,但我认为这是因为DDMS确实不支持UTF-8,在descibed 这个问题.

问题是当服务器收到请求时,它有时根本看不到字符(特别是中文字符),或者当我们通过GET请求检索它时它变成无意义的垃圾.

我还尝试将250个非ascii字符放在一个字段中,因为该特定字段最多可以包含250个字符.但是,它无法在服务器端验证声称已超过250个字符限制.250个ASCII字符工作得很好.

服务器家伙声称他们支持UTF-8.他们甚至尝试模拟包含中文字符的发布请求,并且服务器接收到的数据就好了.然而,这个家伙(一个中国人)正在使用安装了中文语言包的Windows计算机(我想,因为他可以在键盘上输入中文字符).

我猜测Android客户端和服务器(由中国人btw制作)使用的字符集不对齐.但我不知道哪一个有问题,因为服务器家伙声称他们支持UTF-8,而我们的rest客户端配置为支持UTF-8.

这让我想知道Android在默认情况下对所有文本输入使用什么字符集,以及是否可以以编程方式将其更改为其他字符串.我试图找到有关如何在输入小部件上执行此操作的资源,但我没有找到任何有用的东西.

有没有办法为Android中的所有输入小部件设置charset?或者我可能错过了其他客户端配置中的某些内容?或许,也许,只是可能,服务器家伙没有在他们的服务器上使用UTF-8而是使用Windows字符集代替?

android http character-encoding special-characters cjk

18
推荐指数
3
解决办法
3万
查看次数

如何使用Apache HttpClient在Post请求中编码俄语文本?

有以下Java代码:

    public static void register(UserInfo info) throws ClientProtocolException, IOException, JSONException, RegistrationException {
        List<NameValuePair> params=new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("name", info.getName()));
        params.add(new BasicNameValuePair("email", info.getEmail()));
        params.add(new BasicNameValuePair("pass", info.getPassword()));
        params.add(new BasicNameValuePair("genus", String.valueOf(info.getGenus())));
        String response=doPostRequest(params, REGISTRATION_URL);
    }

private static String doPostRequest(List<NameValuePair> params, String url) throws ClientProtocolException, IOException {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(url);

    httppost.setEntity(new UrlEncodedFormEntity(params));
    HttpResponse response = httpclient.execute(httppost); 

    return getContentFromInputStream(response.getEntity().getContent());
} 

private static String getContentFromInputStream(InputStream is) throws IOException {
    String line;
    StringBuilder sb=new StringBuilder();
    BufferedReader reader=new BufferedReader(new InputStreamReader(is));
    while((line=reader.readLine())!=null) { …
Run Code Online (Sandbox Code Playgroud)

java httpclient

7
推荐指数
2
解决办法
1万
查看次数