【问题标题】:Android http post with special character带有特殊字符的Android http post
【发布时间】:2015-02-25 20:53:26
【问题描述】:

我的 php 站点正在回显“här är du/x vår i sikte”,在我的 chrome 浏览器中显示为“här är du/x vår i sikte”。

但是当我在我的 java/android 应用程序中使用 httppost 阅读它时,所有特殊字符 (åäö) 都显示为问号。我的虚拟主机服务使用 UtF-8。 有没有办法转换我的字符串?

这是我的代码:

StringBuffer response = new StringBuffer();
try {
    // Create a new HTTP Client
    DefaultHttpClient defaultClient = new DefaultHttpClient();
    // Setup the get request
    HttpPost post = new HttpPost("my.php");
    try {
        post.setHeader("Content-Type",
                "application/x-www-form-urlencoded;charset=UTF-8");

        MultipartEntityBuilder builder = MultipartEntityBuilder
                .create();
        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

        final HttpEntity entity = builder.build();
        post.setEntity((HttpEntity) entity);

        //builder.addTextBody("rubrik_nr", all_rubrik, ContentType.TEXT_PLAIN);     
        HttpResponse resp = defaultClient.execute(post);
    }catch(Exception E){

    }
    // Execute the request in the client
    HttpResponse httpResponse = defaultClient
            .execute(post);

    BufferedReader in = new BufferedReader(new InputStreamReader(
            httpResponse.getEntity().getContent(),"UTF-8"));
    String inputLine;

while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
Log.d("DEBUG", "response: " + response.toString());


} catch (IOException e) {
Log.d("DEBUG", "j " + response.toString());
e.printStackTrace();
}

return response.toString();
}

【问题讨论】:

  • 因为您的onClick 方法与循环和变量i 不在同一范围内。

标签: android http utf-8 special-characters


【解决方案1】:

我认为因为 setonclikListener 是一个函数/侦听器,而 i 变量是本地变量,并且您不将此变量作为参数传递,您可以将此变量作为属性并将 public int i= x 放在类的顶部

【讨论】:

    【解决方案2】:

    首先,变量i 超出了侦听器的范围,因此您无法使用它。

    其次,记住点击监听器将在你的 for 循环完成后被调用,因此使用变量 i 是不可能的(它不再存在)。但是,当您声明 final 变量时,它将始终在侦听器中可用。但是,您将无法更改它的值。

    for(int i=0;i<end;i++)
    {   
        //bilder
        ImageView replace_img= new ImageView(this);
        replace_img.setImageResource(R.drawable.image_replace);
        RelativeLayout.LayoutParams tmp= new RelativeLayout.LayoutParams(250,250);
        newImg.add(replace_img);                
        ImageView v=  newImg.get(i);
        v.setId(i+1);
    
        // Set the final int that will be available in inner classes
        final int myInt = i;
    
        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View vi) {            
                vi.setOnClickListener(new View.OnClickListener() 
                { 
                    @Override
                    public void onClick(View v) 
                    { 
                        // "myInt" is still usable here, however "i" is not
                        Intent o = new Intent(getBaseContext(), Edit_post2.class);
                        o.putExtra("POST_NR", myInt);
                        Post_list.this.startActivity(o); 
                    }
                });
            }
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 2017-10-24
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多